日々ブログ

当サイトは、アフィリエイトプログラムにより商品をご紹介しています

【プログラミング】SSO(シングルサインオン)について改めて考えてみた

webサービスを開発していると一度は聞くことになる「シングルサインオン(SSO)」ですけど、もてはやされてる割には導入するメリット薄くないかな?と思ってます。
これを導入するためにわざわざ大金をかけるなんてどうなんだろうというのが正直なところなので今回はシングルサインオンについて書いてみたいと思います。

シングルサインオンとは

シングルサインオンは、一つのwebサービスにログインしたら他のサービスを利用する際に改めてログインしなくて済むような仕組みです。
内部的には、認証したという情報をブラウザに記憶させていて、それらを複数のサービスで使えるようにするといった感じです。
yahoo IDを持っていたら、メール・オークション・フリマとか色々使える!といった感じのことです。
シングルサインオンが無いと、メールとオークションそれぞれでIDを作ることになり、若干不便ですからね~。

シングルサインオンについて意思統一するのが難しい

シングルサインオンですが、上でも記述した通り「一つのサービスにログインしたら他のサービスでのログインが不要になる」だけなので、本来非常にシンプルな試みなのですが、開発する上でこんなことが起きます。

ja.wikipedia.org

  • シングルサインオンしたらGoogle にログインしたらうちのサービスも使えるんじゃないの?
  • 複数間のサービスのIDを一元管理できるんじゃないの?
  • セキュリティレベルが上がるんじゃないの?
  • 簡単に作れて安くできるんじゃないの?

大体こんな感じですかね。
シングルサインオン」について検索すると大体上記のような内容が出てきますが、 何かシングルサインオンから外れてる気がします。
「Id連携」、「Id管理サービス(IDaaS)」などと混同してるんじゃないかと。

シングルサインオンが恩恵を受けるのは巨大なwebサービスを持っているところだけ

yahooとか楽天といった複数のサービスを提供している巨大な企業ならわかるんですが、サービスが一つとか二つしか無い会社ってわざわざ導入を検討する必要があるんですかね。
対応しなくても、1回や2回ログイン試行が増えるだけです。
お客様にアカウント登録をしてもらうのが申し訳ないといった理由もあるのでしょうが、アカウント登録を渋る程度の便利さしか提供できていないわけで、そうなると登録をしてもらったところでいずれ使ってもらえなくなります。

プロジェクト間の意思疎通が難しくなり開発速度が落ちる

シングルサインオンを実現するに当たって、プログラミングという意味では、様々なOSSやらサービスが提供されているのでそれほど時間はかかりません。
一方で、どのサービスと連携するか?で揉めてしまってプロジェクトが停滞することが多いように思います。
全サービスに対応すればいいじゃない?というのが分かりやすいのですが、全サービスに対応できることを確認するテスト工数が肥大化します。
また、あの会社にはうちのお客様の情報を提供したくないからシングルサインオンの連携はだめ!といった要望が突然出てきて、最悪作り直す羽目に。

セキュリティが一定水準に保たれる

セキュリティが担保されるかは、シングルサインオンに関わらず、造り手によって決まるというのが正直なところですが、正直情報流出のリスクは上がるんじゃないかというのが個人的な考えですね~。 一見、すでに稼働しているサービスと連携していて、そのサービスが問題なく動いているので、すがりたくなりそうですが、アカウント情報が流出するのなんて一瞬ですからね。 しかも、アカウント情報を連携しているからこそ、見ず知らずのサービスがアカウント情報を漏洩したのに自社のサービスにまでしわ寄せが来る!といったことが容易に想像できます。 実際、パスワードを流出させてるのって、facebookとかtwitterとかが多いですからね~。 セキュリティを高めたいならこじんまりと自社サービスだけで完結するほうが、管理もしやすいというのが正直なところですね~。

haveibeenpwned.com

そもそもそれほど便利か

ユーザー目線で考えたときに、別にそこまで便利じゃなくね?って言うのが正直なところです。
そもそもスマホがパスワードを覚えてくれるので、数秒程度時間がかかるといったくらいです。
それに、ログインしっぱなしのサービスとかも多いですからね~。
むしろ、一つのサービスにログインしただけなのに、他のサービスにも情報が言ってるんじゃないか?って個人的にはちょっと不安になります。
実際、ネット銀行とかのサービスはシングルサインオンに対応していないところが現状は多いですし、それのおかげで他のアカウントの情報が盗まれても「お金」は守られてる!って感じがします。

仕様をまとめやすい社内システムならありかも

上のようなことを考えると社内システムをまとめあげるならいいかな~と。
乱立した社内システムごとにIDを覚えないといけないとかいう状況だったら、効果も歴然だし、 仕様もとりまとめやすいし、セキュリティの心配も社内ネットワークなら関係無いですしね~。
実際うちの会社も乱立しててIDとパスワードを複数覚えないといけないから大変。 半年に1回くらいしか使わないシステムのパスワードとか覚えていないなんてしばしば。