openid technight 20110909_fujie
DESCRIPTION
OpenID Technight vol.8 session slide titled 'Microsoft's RESTful Identity'.TRANSCRIPT
@phr_eidentity MS MVP for Identity Lifecycle Manager
http://idmlab.eidentity.jp
Microsoft の Identity 関連 Software + Service • Identity Provider
• Relying Party Library
RESTful Web Service の実装 • WIF + ACS で OAuth ACS as Consumer with Facebook
ACS as AuthZ Server
• Federation Provider の使い方
• Trust Framework 統合
まとめ
Identity Provider Relying Party Library
Security Token Service ( STS ) • セキュリティ・トークン を処理(発行/変換)
• On-Premise
AD FS 2.0 ( Active Directory Federation Service 2.0 )
• Online / Cloud
ACS v2 (Windows Azure Platform AppFabric Access Control Service v2 )
MFG (Microsoft Federation
Gateway )
6
クラウド STS / Federation Provider ws-federation / OAuth 2.0 / OpenID 等の
Federation Protocol対応 各種 Identity Provider から発行されたトークン
を変換
システム エンティティ
ユーザ Webサーバ等
各種オンライン IdP
オンプレミス IdP ( AD FS 2.0 )
カスタム IdP ( OpenID )
STS ACS v2
Token要求
Security Token
Token要求
Security Token
サポートされているプロトコル • OAuth WRAP 2.0 • WS-Federation • WS-Trust • OAuth 2.0 (Draft 13) • OpenID 2.0
トークンフォーマット
• Simple Web Token(SWT) • SAML 1.1/2.0
既成の Identity Provider との連携
• Windows Live ID/ Google/ Facebool/ Yahoo!(.com)/ OpenID
• Active Directory Federation Service 2.0
Windows Azure AppFabric ACS 本体 クレーム変換 エンジン
OAuth 2.0
WS-Federation
Live ID
クレームルール
Protocol Protocol
WS-Trust
AD FS 2.0
Yahoo!
OpenID
WS-Trustアプリ
OpenID 2.0
WS-Fed対応STS
Windows Live ID
WS-Trust
WS-Federation
Identity Provider
Relying Party
SWT対応アプリ
WEBサイト
SOAP Web サービス
REST Web サービス
OAuth/ WRAP 2.0
SAML/SWT
SWT
SAML/SWT
OAuth/ WRAP 2.0
SAML/SWT
SAML/SWT
SAML/SWT
Windows Identity Foundation • ws-federation / ws-trust 対応の token ハンド
リング ライブラリ
• .NET Framework 4.0
• 各種 Extension ( 現状 Community Technology Preview )
Extension for SAML 2.0 protocols
Extension for OAuth
Extension for U-Prove
ASP.NET
Windows Identity Foundation
.NET Framework 4
クレーム取出し
クレーム評価
各種処理
各種 STS AD FS 2.0
ACS v2
ブラウザ
ASP.NET Web アプリケーション
as an OAuth Consumer as an OAuth Authorization Server
ACS as Consumer
Browser .NET App with WIF
OAuth AuthZ Server
OAuth Resource Server
Access
Redirect
Redirect
AuthN
Consent
Request Access Token
Return Access Token
Return Access Token POST Access Token
Request Resource with Access Token
Return Resource
ws-federation OAuth Return Resource
Return AuthZ Code
WIF アプリケーション ACS の Identity Provider として
Facebook を設定 ACS は Facebook からアクセストークン
を取得し、SAML Assertion として WIF アプリケーションへ渡す
(ws-federation) WIF アプリケーションは SAML トークン
の中のアクセストークンを使い graph api で Facebook を操作
ACS as AuthZ Server
.NET App with WIF Extension
Browser OAuth
Resource Server
Access
Redirect
Consent
Request Access Token
Return Access Token
Request Resource with Access Token
Return Resource
Return Resource
OAuth
Return AuthZ Code
AuthN
実際は ACS に設定された IdP で実施
WIF Extension for OAuth アプリケーション
.NET で OAuth Protected Resource アプリケーション
ACS を OAuth AuthZ サーバとして設定
ACS から見た Identity Provider • Google / Yahoo! … OpenID • AD FS2.0 … ws-federation • Facebook … OAuth
「認証の外部化(Externalize AuthN)」として同列で
紹介されていることがほとんど
OAuth 対応のサービスが認証する目的 • プロテクテッド・リソースへのアクセスさせるため • 認証結果や Claim をRP/SPに渡すためではない
「合鍵モデル」であることの理解が必要
• 詳しくは @_nat さん「非技術者のためのOAuth認証(?)とOpenIDの違い入門」http://www.sakimura.org/2011/05/1087/
• 安易に permission を広げない。user_about_me など
合鍵モデル • ACS が Facebook から取得したアクセストーク
ンを全く別の Windows Form アプリケーションで使ってみる
OpenID Connect もあるけど。。 ws-trust との組み合わせも
• AD FS2.0 で認証、発行された SAML2.0 bearerトークンをOAuth の AuthZ サーバへ渡してアクセス・トークンを受け取る Recipient : AuthZ Server の Endpoint grant_type : http://oauth.net/grant_type/assertion/saml/2.0/bearer
• AD FS2.0 + WIF の例 by @vibronet • SFDC + PingFederate の例 by @metadaddy
STS
Consumer
AuthZ Server
Resource Server
RST RSTR SAML Token
+Client ID +Client Secret
Access Token
Resource
User / Device
AppFabric ACS と Windows Identity Foundation を使うと割と簡単に既存のサービスと連携するサービスを開発することが出来る
ただし、ACS から見て Identity Provider として OAuth / OpenID / ws-federation の区別がないので、よく理解して使うことが大切