Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Latest Status of Identity Federation

Latest Status of Identity Federation

2015年3月に私が公開したスライドです。長らくSlideShareに配置していましたが、SlideShareが広告まみれになって酷いので、Speaker Deckに移しました。以下、公開時の紹介文です。

---

ID連携の歴史、現状、そしてこれからを、開発者向けに紹介します。

Introducing the history, current status and the future to developers.

Avatar for Atsushi Kambara

Atsushi Kambara

March 02, 2015
Tweet

More Decks by Atsushi Kambara

Other Decks in Technology

Transcript

  1. 自己紹介 • 神原 淳史 @atsukanrock https://github.com/atsukanrock • Sansan株式会社 (2014年11月から) アバナード株式会社

    (2011年7月~2014年10月) • Software Developer: Domain-Driven Design / .NET / C# / Microsoft Azure • Strong: トラブルシューティングが速い、アーキとか組める • Weak: 酒にだらしない
  2. SAML OAuth OpenID Connect AD FS Azure AD JWT OpenID

    WS-Trust WS-Federation Open AM Azure ACS MFA
  3. 世はセキュリティの時代 時代の要請 • 個人情報保護 たった1回の個人情報流出が企業 の存続に関わる • 情報セキュリティ ビジネスデータをきっちり 守らなければならない

    IT管理者が思うこと • 社員が管理するアカウント数 を減らしてあげたい (さもないとあいつら絶対パスワード使い回す) • Active Directoryで全部管理 したい (全部俺様の管理下におかないとあいつら何するか分からない) • 退職者対応が面倒
  4. それはプロトコルの歴史 2000年 2005年 2010年 イントラ Web デバイス Kerberos SAML WS-Federation

    OAuth Open ID Connect 高速なら 何でも HTTP テキスト 軽量 ID連携の プロトコル テクノロジー への要求 時代の要請 年代
  5. プロトコルの歴史 2000年 2005年 2010年 イントラ Web デバイス Kerberos SAML WS-Federation

    OAuth Open ID Connect 高速なら 何でも HTTP テキスト 軽量 ID連携の プロトコル テクノロジー への要求 時代の要請 年代
  6. フロー (HTTP POST binding) HTTP Redirect: SAML Request を query

    string に乗せる HTTP POST: SAML Response を form に乗せる
  7. ID連携のデファクトスタンダード • ID連携 (実質AD連携) 方式がSAMLなSaaS: • Salesforce • Google Apps

    • Cybozu • Workday • ServiceNow etc. Identity Provider (IdP) としてでなく、 Service Provider (SP) としての話
  8. 「枯れた」プロトコル (良い意味で) • 最新バージョン: SAML 2.0 • SAML 2.0標準化: 2005年3月

    • XMLベース • エンタープライズID連携の世界で支配的シェア
  9. 一方その頃MS (Windows系ID管理の支配者) は こう思っていた • SAML嫌ぁぁあああ!! • WS-Federation推奨!! WS-Federationの特徴: •

    SAMLと似たようなもん • XMLベース • サポーター: MS 結論 • Windows Identity Foundation (WIF) ではWS-Federationだけ サポートします WIF: .NETでID連携を実装する ための (当時唯一の) MS謹製 ライブラリ • AD FSではSAMLもサポート しますけど
  10. 結果 • 2010年頃までSAML vs WS-Federation抗争が継続 現在はMSのAD FSでのSAMLサポートにより概ね終息: • オープンなサービスではSAML •

    MS製品で固められるシステムではWS-Federation • .NETでSAMLを実装するには自前実装が必要 もしくはサードパーティ製コンポーネント
  11. 自前実装 is NOT that hard リクエストを出す • XMLのテンプレを埋める程度 string.Format で可能なレベル

    レスポンス (トークン) を受け取る • XMLの決まった位置から値を 取り出す • 改ざんチェックは.NETが クラスを提供 • SignedXmlクラス • 事前に公開鍵の入手が必要
  12. ネイティブアプリ (iOS / Android / Win8) 前提 • クライアントはWeb APIを

    呼び出す • Web API呼び出しはステート レス 前提から導き出される要件 • 「認証OK」を示す何かを 毎回送る必要あり
  13. プロトコルの歴史 2000年 2005年 2010年 イントラ Web デバイス Kerberos SAML WS-Federation

    OAuth Open ID Connect 高速なら 何でも HTTP テキスト 軽量 ID連携の プロトコル テクノロジー への要求 時代の要請 年代
  14. フロー (Authorization Code Grant) http://www.atmarkit.co.jp/ait/articles/1209/10/news105.html (デジタル・アイデンティティ技術最新動向 - @IT) HTTP Redirectを命じる

    Query stringにAuthorization Code Redirect命令を捕まえて Authorization Codeを取り出す HTTP POSTでAuthorization Codeを送る ResponseにAccess Token
  15. OAuth is NOT for AuthN but for AuthZ OAuthは認証でなく承認 •

    認証 (AuthN: Authentication) ユーザが「誰であるか」 • 承認 (AuthZ: Authorization) ユーザが「何をできるか」 例: Facebook’s OAuth • ユーザが「誰であるか」を確認 するのはFacebook • アプリはFacebookから「その ユーザができること」を 記したトークンを受け取る • アプリが「ユーザが誰であるか」 を知るには、それを知るための APIを叩く
  16. プロトコルの歴史 2000年 2005年 2010年 イントラ Web デバイス Kerberos SAML WS-Federation

    OAuth Open ID Connect 高速なら 何でも HTTP テキスト 軽量 ID連携の プロトコル テクノロジー への要求 時代の要請 年代
  17. OAuthのセキュリティ上の弱点をカバー • トークンの形式を標準化 • JWT: JSON Web Token • JWTはトークンのvalidationが可能

    • 改ざんされていないこと (トークン署名) • 発行元がたしかにxxxであること • 発行先がたしかに我々 (アプリ) であること • 意図したユーザに対するトークンであること http://blogs.msdn.com/b/tsmatsuz/archive/2015/02/18/azure-ad-service-web-api-programming- with-access-token-validation-check.aspx (松崎 剛 Blog)
  18. MS is now working on OpenID Connect • Azure ADは対応

    OpenID Connect and OAuth 2.0 support in Azure Active Directory has GA’d! http://blogs.technet.com/b/ad/archive/2014/09/09/openid-connect-and-oauth-2-0-support-in- azure-active-directory-has-ga-d.aspx (Active Directory Team Blog) • AD FSは未対応 次バージョンで対応との噂も
  19. SAML vs OpenID Connect SAML Pros: • エンタープライズで支配的 • AD

    FSが対応 Cons: • Heavyweight • 複雑 • .NETでの実装が大変 • コンシューマー向けサービスは IdP非対応が多い OpenID Connect Pros: • Lightweight • シンプル • .NETでの実装が容易 • コンシューマー向けサービスも IdP対応が多い Cons: • AD FSが未対応