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.

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が未対応