マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 田辺 茂也
「クレーム」ベースの ID モデルと “Geneva” “Geneva” のシナリオ “Geneva” での変更点 開発のポイント 既存の ID システムとの連携
アイデンティティ (ID) とは ユーザー名などの識別情報のセット ほとんどのアプリケーションは ID を利用している ID 情報は、アプリケーションの動作の 重要な部分を決定する そのユーザーが何をしてよいか アプリケーションが、どのようにユーザーと やりとりを行うか制御
アプリケーションは、それぞれの場面で 異なる ID 技術を使う必要がある Windows ドメイン下では Active Directory (Kerberos) インターネットでは、ユーザ名とパスワード 組織間連携では、 WS-Federation や SAML (Security Assertion Markup Language) すべての場面で共通に使える手法はないのか クレームベースの ID により可能に 開発者、 IT Pro 双方にメリット
トークン デジタル署名 クレームの例 名前グループ年齢 クレーム 1 クレーム 2... クレーム n クレーム 3 トークンは、 ID 情報を記述したもの いくつかのクレームで構成 それぞれのクレームは、 トークン内の要素の情報を含む トークンの 生成元を示し、 改ざんを防ぐ
ID プロバイダーは、 クレームを作成するオーソリティ 一般的な ID プロバイダーの例 社内では、会社 ( 人事、 IT 部門など ) インターネットでは、自分自身の場合が多い ID プロバイダーは、 STS: セキュリティ トークン サービスを運用 トークンを発行するサーバー トークンの発行リクエストは WS-Trust 経由で受付 さまざまなフォーマットが利用可能 SAML フォーマットがよく使われている
アプリケーション : ユーザーを特定するためにクレームを利用 ID プロバイダー : クレームを含むトークンを発行 連携 : 信頼関係のもと、クレームが渡される 連携 ID プロバイダー (IdP, STS) 2. トークン ( クレーム ) 取得 3. トークン ( クレーム ) 送信 1. クレームを 要求 ユーザー アプリケーション (RP)
ID プロバイダー アカウント 属性情報 セキュリティ トークン サービス (STS) 2) 情報の取得 1) 認証を行い トークンを要求 3) トークンを作 成し送信 トークン ブラウザー クライアント ユーザー
4) トークン内のクレームを利用 ブラウザー クライアント ユーザー ID プロバイダー 1) トークン取得 トークン 2) トークン提出 トークン 信頼済み STS リスト アプリケーション 3) トークンの 署名を調べ、 信頼する STS か どうか判断 ID フレームワーク STS
現在の多くのアプリケーションは、 単純な ID 情報しか得られない ユーザー名など それ以上の情報は問い合わせ リモートデータベース ( ディレクトリサービスなど ) ローカルデータベース クレームベースの ID では、 それぞれのアプリケーションが 必要なクレームを要求 STS がクレームをトークンに記述 要求されたクレームのみを送信
ユーザーの特定 グループやロールの情報 パーソナライズ情報 ユーザーの表示名など 操作の許可、拒否 特定の情報へのアクセス 特定の機能の利用 操作の制限 購入上限の設定 ID プロバイダー側での設定も可能
5) トークン内のクレームを利用 ユーザー アプリケーション ID プロバイダー STS ID セレクター 1) アプリケーションに アクセスし、トークンの 条件を取得 2) 条件を満たす ID を選択 3) 選択した ID のトークンを 取得 トークン 4) トークンを 送信 トークン ID フレームワーク ブラウザー クライアント STS
5) トークン内のクレームを利用 CardSpace “Geneva” ブラウザー クライアント ユーザー 4) トークンを 送信 アプリケーション ID プロバイダー STS 3) 選択した ID のトークンを 取得 STS 2) 条件を満たす ID を選択 “Geneva” Server 1) アプリケーションに アクセスし、トークンの 条件を取得 “Geneva” Framework トークン
3 つの ID テクノロジー “Geneva” Server Active Directory フェデレーション サービス (AD FS) の 次期バージョン STS Windows CardSpace “Geneva” Windows CardSpace の次期バージョン “Geneva” Framework “Geneva” の目標は、クレームベースの ID モデルを実用的にすること
Microsoft Services Identity Backbone 企業のネットワーク 境界は、消滅しつつ ある どうすれば、社内ア プリケーションを社 員以外に提供し、利 用を拡大できるか 企業 ? パートナー 社内 アプリケーション Active Directory Active Directory Active Directory Active Directory
“Geneva” Framework クレーム対応アプリケー ションを作成するための.NET ベースのフレーム ワーク “Geneva” Server Active Directory と 統合された STS Windows CardSpace に 対応 Windows CardSpace “Geneva” ユーザーのコントロール 下にある ID セレクター より小さく、速く クレーム Microsoft Services Identity Backbone Active Directory Active Directory Active Directory Active Directory 社内 アプリ 社内 アプリ “Geneva” Framework “Geneva” Server エンタープライズ ID バックボーン
WS-Federation, WS-Trust, SAML 2.0 プロトコル のサポート 上記プロトコル対応の フェデレーションソフト ウェア・サービスと相互 運用可能 Microsoft Services Identity Backbone Active Directory Active Directory Active Directory Active Directory “Geneva” Server エンタープライズ ID バックボーン User Database User Database “Geneva” Server Third Party STS 社内 アプリ 社内 アプリ “Geneva” Framework
Microsoft Federation Gateway は、 マイクロソフトの ID バックボーンの重要な サービス Azure クラウドアプリ ケーションや開発者サー ビスへの橋渡しを行う 一つのフェデレーション で、さまざまなサービス にアクセス可能 WS-Federation, WS-Trust 準拠 Microsoft Services Identity Backbone クラウド アプリ ・ サービス クラウド アプリ ・ サービス Active Directory Active Directory “Geneva” Server Third Party STS User Database User Database Microsoft Federation Gateway Microsoft Services ID バックボーン
Windows Live ID の アカウントでも Federation Gateway 経由で、クラウドア プリにアクセス可能 Windows Live アドミ ンセンターにより ID 管理のアウトソース も可能 自動管理用の API カスタマイズ可能な UX Microsoft Services Identity Backbone クラウド アプリ ・ サービス クラウド アプリ ・ サービス Active Directory Active Directory Microsoft Federation Gateway “Geneva” Server Microsoft Services ID バックボーン Third Party STS User Database User Database Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー
Active Directory と Microsoft Federation Gateway とのフェデ レーション 無償ダウンロード、 簡単なセットアップ 1:1 の信頼ではなく、 ゲートウェイとの 信頼 Windows CardSpace をサポート Microsoft Services Identity Backbone クラウド アプリ ・ サービス クラウド アプリ ・ サービス Active Directory Active Directory Microsoft Federation Gateway Microsoft Services ID バックボーン Third Party STS User Database User Database Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー Active Directory Active Directory “Geneva” Server Microsoft Services Connector
クレームベースの アクセスにより、 さまざまな ID を サポートする アプリケーションを 作成可能 Microsoft Services Identity Backbone Active Directory Active Directory Microsoft Services Connector Microsoft Services ID バックボーン Third Party STS User Database User Database Windows Live ID Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー Active Directory Active Directory “Geneva” Server アプリ ケーション “Geneva” Framework Microsoft Federation Gateway
クレーム対応の アプリケーションは 一度作成すれば どこにでも ホスト可能 ID プロバイダーは 設定による選択で、 アプリケーションの ロジックには 埋め込まれていない クラウドへの移行、 オンプレミスへの 移行も容易 Microsoft Services Identity Backbone Active Directory Active Directory Microsoft Services Connector Microsoft Services ID バックボーン Windows Live ID Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー Active Directory Active Directory アプリ ケーション アプリ ケーション “Geneva” Framework Microsoft Federation Gateway
クレームの用途は ログインだけではない.Net Access Control Service: STS がアクセス コントロールのための トークンを発行 アクセスコントロールの ロジックを ルールセットに分解 ルールセットの管理 ポータルや API を提供 Microsoft Services Identity Backbone Active Directory Active Directory Microsoft Federation Gateway Microsoft Services Connector Microsoft Services ID バックボーン Windows Live ID Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー Active Directory Active Directory “Geneva” Server アプリ ケーション アプリ ケーション “Geneva” Framework.Net Access Control Service
さまざまなサービス、 ID プロバイダーから、 目的に適合するもの を選択 シンプルな管理の ためにゲートウェイ を活用 Microsoft Services Identity Backbone Microsoft Services ID バックボーン Active Directory Active Directory User Database User Database OpenID プロバイダ OpenID プロバイダ Microsoft Federation Gateway “Geneva” Server アプリ ケーション アプリ ケーション “Geneva” Framework.Net Access Control Service Third Party STS Third Party STS アプリ ケーション アプリ ケーション Third Party Framework HealthVault (OpenID) HealthVault (OpenID)
ライトウェイトな SSO も利用可能 Live Framework: WebAuth OpenID Microsoft Services Identity Backbone Microsoft Services ID バックボーン Active Directory Active Directory Any STS Web アプリ Web アプリ “Geneva” Framework Web アプリ Web アプリ Live Framework OpenID 対応 Web アプリ Microsoft Federation Gateway Windows Live ID Windows Live ID カスタム ドメイン カスタム ドメイン コンシューマー
信頼 ID セレクター ( 必要に応じて ) アプリケーション ( クラウドまたはオンプレミス ) ID プロバイダー “Geneva” Framework Live Framework Windows CardSpace “Geneva” Active Directory “Geneva” Server Microsoft Services Connector Live ID Microsoft Federation Gateway.Net Access Control Service.Net Access Control Service Software Services Third Party Frameworks Third Party Frameworks Third Party Services Third Party Servers サードパーティの ID セレクター クレーム取得必要なクレーム クレームを 送信 クレームを送信 クレームを 要求
現行の AD FS は パッシブクライアント ( ブラウザー ) のみサポート STS は未提供 WS-Federation のみサポート “Geneva” Server では アクティブ・パッシブクライアントを サポート STS を提供 WS-Federation と SAML 2.0 プロトコルを サポート 信頼関係の管理性を向上 一部の設定を自動化
Windows CardSpace “Geneva” は ID 選択の標準的な UI を提供 カードのメタファー カードを選ぶことで ID ( トークン ) を選択
カードの実体は、インフォメーションカード ID プロバイダーとの関連を示す XML ファイル 特定の ID のトークン発行を要求するために 必要な情報が含まれる インフォメーションカードに含まれない情報 クレーム情報 STS の認証のための情報
Information Card Foundation を設立 マルチベンダーの業界団体 ボードメンバーに Google, Microsoft, Novell, Oracle, and PayPal Web サイトでは、標準アイコンにより インフォメーションカードでのログインを 示す
Windows CardSpace “Geneva” は.NET Framework とは別に単独提供 小さいインストーラー、速いインストール Windows CardSpace “Geneva” では 利用に応じた最適化が可能 前回ログインに利用したカードを 提示できる 専用のデスクトップは使用しない
クレーム対応アプリケーションを 簡単に作成するためのフレームワーク 以前の名称は “Zermatt” “Geneva” Framework でできること トークンの署名の確認とクレームの抽出 クレームを扱うクラス 独自 STS の作成 …
必要なクレームを決める 識別子、属性など クレームを扱うプログラムの作成 “Geneva” Framework の活用 クレームの取得元を選択 ソフトウェア : “Geneva” Server, サードパーティ サービス : Microsoft Federation Gateway, Windows Live ID,.Net Access Control Service, サードパーティ 独自に STS を作成 ユーザーが利用可能な STS がない場合 Geneva claims provider の利用
IClaimsPrincipal IClaimsIdentity Sample Fill Claim ClaimType = “Name” Value = “Bob” Issuer = “WLID” SubjectClaim ClaimType = “Name” Value = “Bob” Issuer = “WLID” Subject IClaimsIdentity caller = Thread.CurrentPrincipal.Identity as IClaimsIdentity; string Role = (from c in caller.Claims where c.ClaimType == MyClaimTypes.Role select c.Value).Single(); IClaimsIdentity caller = Thread.CurrentPrincipal.Identity as IClaimsIdentity; string Role = (from c in caller.Claims where c.ClaimType == MyClaimTypes.Role select c.Value).Single();
8) トークン内の クレーム利用 “Geneva” Server ユーザー Active Directory Domain Services 3) アプリケーション にアクセスし、 トークンの要件取得 5) アプリ X 、アプリ Y 、 ユーザーに対する ポリシーを確認 アプリ Y “Geneva” Framework 1) アプリ X 用 トークン取得 X 用 トークン X 用 トークン 4) アプリ Y 用 トークン要求 X 用 トークン X 用 トークン 6) ポリシーに従って アプリ Y 用トークンを発行 Y 用 トークン Y 用 トークン 7) トークン送信 Y 用 トークン Y 用 トークン 2) トークン送信 X 用 トークン X 用 トークン STS ブラウザー クライアント アプリ X “Geneva” Framework
IClaimsPrincipal IClaimsIdentity Sample Fill Claim ClaimType = “Name” Value = “Bob” Issuer = “WLID” Subject Claim ClaimType = “Name” Value = “Bob” Issuer = “WLID” Subject Delegate IClaimsIdentity Sample Fill Claim ClaimType = “Name” Value = “Server1” Issuer = “MS STS” Subject Claim ClaimType = “Name” Value = “Server1” Issuer = “MS STS” Subject Delegate
Microsoft Federation Gateway Live Identity Service Exchange ISV アプリ SharePoint ActiveDirectoryActiveDirectory エンタープライズ オンプレミス MicrosoftServicesConnectorMicrosoftServicesConnector Microsoft Online Microsoft Dynamics CRM Online Windows Live LiveMeshLiveMesh クラウド Azure Services Platform ISV アプリ エンター プライズ アプリ Employee ブラウザーブラウザー OfficeOffice アプリアプリ
ユーザーがリンクをクリック - Microsoft Services Connector で認 証 Service Connector は Active Directory で認証 Service Connector は ログイントークンを発行し Federation Gateway にリダイレクト Federation Gateway は トークンを確認し クレームを変換 Federation Gateway は サービストークンを発行し サービスにリダイレクト ユーザーがサービスにアクセス デスクトップ ブラウザーブラウザー OfficeOffice アプリアプリ エンター プライズ MicrosoftServicesConnectorMicrosoftServicesConnector ActiveDirectoryActiveDirectory Microsoft Federation Gateway クラウド アプリアプリ サービスサービス
Active Directory と Federation Gateway 、 クラウドアプリ・サービスを接続 一度のフェデレーション設定で、 自動プロビジョニング 特定の CA 発行の SSL 証明書によりドメインの所有者を証明 ドメイン、サインインのエンドポイント署名鍵を登録 継続的なフェデレーションの管理タスクは自動化 エンタープライズ MicrosoftServicesConnectorMicrosoftServicesConnector ActiveDirectoryActiveDirectory Microsoft Federation Gateway クラウド アプリアプリ サービスサービス
フェデレーションのメリット アプリ・サービスを、複数の組織に提供可能 ID をコピーしないため シンプルな管理 セキュア ユーザーはシングルサインオン Federation Gateway / Services Connector のメリット 既存の ID インフラに変更を加えずに クラウドサービスを活用・移行できる Point-to-Point ではなく、 Hub & Spoke のため 設定と管理がシンプル セキュリティレベルの維持 クラウド用のアカウント、パスワード不要
クラウドでは、クレームベースの ID モデルの活用を! “Geneva” は、クレームと ID のフェデレーションをサポートする、 各種技術を提供します 既存の ID システムを最大限に活用し、 便利なシステムとシンプルな管理を 両立させましょう!
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
“Geneva” Microsoft Services Connector Microsoft Federation Gateway cc aspx
.Net Access Control Service Microsoft Federation Gateway Microsoft Service Connector Software Services “Geneva” Server Live Identity Services NowH2 CY 2008H1 CY 2009H2 CY 2009 Beta 1 Beta 2 RTM CTP Beta RTM OpenID Beta In Production Beta 1 CTP Refresh “Geneva” Framework, CardSpace Beta 1 Beta 2 RTM Live Framework In Production OpenID RTM
“Geneva” と AD FS v1 ( 現行 ) との比較
AD FS1 “Geneva” Account Store AD DS YY AD LDS Y? SQL db NN 3 rd party LDAP NN Attribute Store AD DS YY AD LDS YY SQL db Code? 3 rd party LDAP Code? Policy Store SQL db NY AD/AD LDS/LDAP NN Flat file YN
AD FS1 “Geneva” WS-Federation 1.0 (Passive Requestor Interop Profile) YY WS-Federation 1.2 (Min Passive Requestor Subset) n/aY POST (push) Binding Y wresultptr (pull) Binding ? Home Realm Discovery service ? WS-Trust 1.3 ( aka Active Requestor Profile) n/aY Issue Y Issue “OnBehalfOf” (proxy support) Y Issue “ActAs” (identity delegation) Y Renew ? Validate ? WS-SecurityPolicy 1.2 n/aY
AD FS1 “Geneva” SAML 1.0/1.1 Web SSO Protocol NN SAML 2.0 Web SSSO Protocols n/aY IdP Lite & SP Lite Operational Modes Y Web SSO,, HTTP redirect Web SSO,, HTTP redirectp1 Web SSO,, HTTP POST Web SSO,, HTTP POSTp1 Identity Provider Discovery (cookie) Identity Provider Discovery (cookie)p1 Web SSO,, HTTP Artifact Web SSO,, HTTP Artifactp2 Artifact Resolution, SOAP Artifact Resolution, SOAPp2 Single Logout (IdP-initiated) – HTTP redirect Single Logout (IdP-initiated) – HTTP redirectp2 Single Logout (SP-initiated) – HTTP redirect Single Logout (SP-initiated) – HTTP redirectp2 Enhanced Client/Proxy SSO, PAOS (*) Enhanced Client/Proxy SSO, PAOS (*)p3 GSA Profile (LA harmonized e-Gov Profile) Y
AD FS1 “Geneva” SAML 1.1 Tokens YY Authentication & Attribute Statements YY Signed tokens YY Encrypted tokens NY SAML 2.0 tokens n/aY Authentication & Attribute Statements Y Extensible claim type (any URI) Y Signed tokens Y Encrypted tokens Y Proof tokens (symmetric/asymmetric keys) Y Authentication Context ?
AD FS1 “Geneva” Card Issuance Managed InfoCard provisioning for CardSpace Y Automated InfoCard versioning for CardSpace ? Token Issuance CardSpaceY 3 rd Party Identity Selectors Y InfoCard Profile identity claim types Y Display tokens Y Privacy PPID claim ? Range constrained values (e.g. Age > 21) ? Non-auditing tokens (Audience hidden from STS) Y Personas Multiple managed cards per AD account Y
インフォメーションカードセレクタの 相互運用性
Windows CardSpace を利用 Internet Explorer 6/7/8 Firefox Identity Selector カードの一元管理が可能、 Windows のみ対応
独自のセレクターを利用 Higgins Firefox, GTK, Cocoa, Eclipse RCP Digital Me (Bandit Project) Firefox, SuSE Linux, Mac OSX OpenInfoCard FireFox の組み込みセレクター Xmldap.org のプロジェクト Infocard Selector For Safari Mac OSX Azigo AIR ベースのセレクター カードはクラウドに保存
HTML, ASP.NET 2.0: “Geneva” Framework ( 旧称 “Zermatt”) クレームを扱う共通フレームワーク PHP (Zend): Java: Ruby: C: Python: Higgins Project Bandit Project ……
SAML Protocol Web SSO &Circles of Trust ライトウェイトな URI ベースの ID WS-* ベースの通信 ユーザーセントリック