hbstudy#22

昨日はhbstudy#22に行ってきました。

第22回 クラウド時代のシングルサインオン、インフラエンジニアぷちLT大会 震災編
http://heartbeats.jp/hbstudy/2011/04/hbstudy22.html

クラウド時代のシングルサインオン

発表者
シングルサインオンとは?
  • Single Sign-On (SSO)
  • 一度のログイン操作さえ完了すれば、複数のWebアプリケーションに認証操作することなくアクセスすることが可能となる技術
なぜ今シングルサインオン
  • クラウドの普及に伴って今後さらなる需要が見込まれる。
  • 以前にもJ-SOX法対応などで増えてきていた。
今後の需要
  • 社内にある多数あるWebアプリ(オンプレミス)を一つにまとめて管理したい。
OpenAMとは
シングルサインオンの方式

※OpenAMに限らず他の認証技術もほとんど同じ

  • SAML
    • ブラウザ経由でアクセス
  • エージェント方式
    • Service Provider (SP)側にAgentをおく。
    • Cookieを使用して認証
  • リバースプロキシ方式
    • HTTPヘッダを送るID/PASSをPOSTで送る。
    • プロキシサーバがボトルネックになる
SSOの導入

Webアプリケーションを改修する
元々SAMLに対応していれば不要。

  1. SAML対応/非対応
  2. Webアプリケーションの改修が必要かどうか
  3. 改修してSAMLに対応させることができるか
  4. エージェントがWeb/APPサーバに対応しているか

ドメインやホスト名は十分吟味して決定する

  • Cookie, SSLなどに影響するため、一度SSO環境を構築すると変更するのが大変

Cookieドメインの範囲は可能な限り限定する

  • SAMLに関しては異なる企業におけるSSOなので、問題なし
SAML
  • Secure Assertion Markup Language
  • 認証、認可、ユーザ属性情報などをXMLで送受信するための仕様
  • Google Apps Salesforceなどで導入。まだ導入している企業数は少ない。
認証と認可の違い

認証(Authentication)

  • 本人性を確認する

認可(Authorization)

  • あるリソースへアクセスするための権限を与える。要は、認証後のアクセス制御
用語解説

Federation: 連携の意味。OpenAMなどのプロトコルやその仕組みの総称として使われる。

SAMLによるシングルサインオン

通常のWebアプリのログイン処理

  1. ユーザがアクセス
  2. セッション確認
  3. 認証処理
  4. セッション生成
  5. サービス提供

SAMLの場合

  1. ユーザがアクセス
  2. セッション確認
  3. SAML
  4. セッション生成
  5. サービス提供
WebアプリのSAML対応

プログラミング言語SAMLライブラリを提供

  • Java, PHP, Pythonなど
  • 一から実装するのは、超大変。神。

※プログラミングしたくなかったらリバースプロキシを選択

その他の認証認可プロトコル
  • OpenIDは認証 -> BtoCが多い
  • OAuthは認可 -> Webアプリ間でユーザ情報を認可する。認証はしない。
  • SAMLは認証,認可に対応

※現状SAMLに対応したWebサービスは少ない

SAMLによるシングルサインオン環境の構築
  • トラストサークル、信頼の輪を意味する

Circle Of Trust CoT

  • 認証シーケンス

SP <-> IdP

Q&A
  • シングルサインアウトの実装例は?
    • ブラウザにリダイレクトが大量に発生するため、正直そこまでやる必要はないと思っている。