Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
FIDO in Windows10
MVP for Forefront Identity Manager
Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp
1
自己紹介
2
 Blog
 IdM実験室(Identityに関することを徒然と):http://idmlab.eidentity.p
 Social
 Facebook Page : eIdentity(Identityに関するFeed...
FIDO Support in Windows 10?
3
http://blogs.windows.com/business/2015/02/13/microsoft-announces-FIDO-support-coming-to-wind...
Agenda
 True SSOの実現に向けて
 Windows 10 + FIDO 2.0 = Azure AD Join
 まとめ
4
True SSOの
実現に向けて
5
True SSOの実現に向けて - 過去~現在
 Active Directoryドメイン(AD DS)で
の組織内PCの管理
 Windows統合認証 / Kerberosによる
PCとアプリケーション間のSSO
 ドメインネットワーク...
True SSOの実現に向けて – 目指す姿
 どこにからでも、どんなデバイスからでも、デバ
イス~アプリケーション間でのSSOを実現
 必要な要素
 どこからでも使えるID管理基盤
 どこからでも使えるデバイス管理基盤
 各基盤に対...
キーワード
 Microsoft Azure Active Directory(Azure AD)
Device Registration Service(DRS)
 Windows 10
Microsoft Passport
Web...
Microsoft Azure Active Directory
 Microsoft提供のIDaaS
 IdP機能
 Office365等、SAML/OIDC対応アプリ
ケーションとの連携、プロビジョニング
 OAuth2.0によるW...
Windows 10
 2015年夏~リリース予定
 PC向け、モバイル向けのエディション
 ユニバーサル・アプリケーション・プラット
フォームによるアプリケーションの共通化
 Azure ADとの統合の実装
 Microsoft P...
Azure AD と Windows 10で実現する姿
11
Internal Services Azure Active Directory Cloud Services
Office365
SAML/OIDC SP
WebAPI
AD FS...
Windows 10 +
FIDO 2.0
=Azure AD Join
12
Azure AD Join~アプリケーション利用の流れ
- Microsoft Passport / Windows Hello
 Device Registration(Azure AD Join)
 Azure AD DRSによるデバイ...
Device Registration
14
IdP Store / TPM
Azure AD
Other IdP
Private Key
Windows 10 Device
Azure AD
AuthN Service
Device Regi...
Device Registration
15
16<RepLookup v="5">
<G>D576978E-9DC9-4D48-8E03-479391E35482</G>
<O>00000000-0000-0000-0000-000000000000</O>
<D>10.0.8110.6...
17
<RepLookup v="5">
<G>D576978E-9DC9-4D48-8E03-479391E35482</G>
<O>00000000-0000-0000-0000-000000000000</O>
<D>10.0.8110....
18
{
"issuer":"https://sts.windows.net/{tenantid}/",
"authorization_endpoint":"https://login.windows.net/common/oauth2/aut...
19
HTTP/1.1 302 Found
Location: https://clouddomainjoin.azurewebsites.net//9/join.html#id_token=xxx&session_state=yyy
6. G...
20
<RepLookup v="5">
<G>D576978E-9DC9-4D48-8E03-479391E35482</G>
<O>00000000-0000-0000-0000-000000000000</O>
<D>10.0.8110....
21
<RepLookup v="5">
<G>D576978E-9DC9-4D48-8E03-479391E35482</G>
<O>00000000-0000-0000-0000-000000000000</O>
<D>10.0.8110....
Azure AD
Other IdP
Private KeyNGC KEY-ID
Keys …
User Login
22
IdP Store / TPM
Windows 10
Azure AD
AuthN Service
1.Obtain N...
23
Azure AD
Other IdP
Private KeyNGC KEY-ID
Keys …
Access to Application
24
IdP Store / TPM
Windows 10
Azure AD
AuthN
Service...
25https://login.microsoftonline.com/common/oauth2/authorize?
resource=https%3a%2f%2fmanagement.core.windows.net%2f¥u0026
r...
26{
"aud": “xxxx",
"iss": "https://sts.windows.net/xxx/",
"iat": 1429925228,
"nbf": 1429925228,
"exp": 1429929128,
"ver": ...
まとめ
27
まとめ
 遂にKerberosを捨てる時が来た?
 ドメイン内SSOとWebSSOの間の大きな溝をようやく越えられるか?
 過渡期をどうやって乗り越えるかがインテグレータの腕の見せ所かも
 標準化に期待
 Windows 10以外への...
参考情報
 [Microsoft Virtual Academy]クラウド時代の Active Directory 次の一手シリーズ
 http://goo.gl/Lh7rhi
 [Microsoft Virtual Academy]Wi...
Upcoming SlideShare
Loading in …5
×

FIDO in Windows10

7,690 views

Published on

Windows10におけるFIDO実装に関するfidcon #20資料。
Microsoft Passport / Windows Hello、Azure AD Joinについて解説しました。

Published in: Technology

FIDO in Windows10

  1. 1. FIDO in Windows10 MVP for Forefront Identity Manager Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp 1
  2. 2. 自己紹介 2  Blog  IdM実験室(Identityに関することを徒然と):http://idmlab.eidentity.p  Social  Facebook Page : eIdentity(Identityに関するFeed):https://www.facebook.com/eidentity  記事  Windowsで構築する、クラウド・サービスと社内システムのSSO環境 (http://www.atmarkit.co.jp/fwin2k/operation/adsf2sso01/adsf2sso01_01.html)  クラウド・サービス連携の基本と最新トレンド (http://www.atmarkit.co.jp/fwin2k/operation/idftrend01/idftrend01_01.html)  開発者にとってのWindows Azure Active Directoryの役割と今後の展開 (http://www.buildinsider.net/enterprise/interviewvittorio/01)  その他  日本ネットワークセキュリティ協会(JNSA)アイデンティティ管理WG(書籍:「クラウド環境におけるアイデンティティ管理ガイドライ ン」etc)  OpenID Foundation Japan 教育・翻訳WG(OAuth/OpenID Connect仕様翻訳)、エンタープライズ・アイデンティティ WG
  3. 3. FIDO Support in Windows 10? 3 http://blogs.windows.com/business/2015/02/13/microsoft-announces-FIDO-support-coming-to-windows-10/ https://blogs.windows.com/business/2015/04/21/windows-10-security-innovations-at-rsa-device-guard-windows-hello-and-microsoft-passport/
  4. 4. Agenda  True SSOの実現に向けて  Windows 10 + FIDO 2.0 = Azure AD Join  まとめ 4
  5. 5. True SSOの 実現に向けて 5
  6. 6. True SSOの実現に向けて - 過去~現在  Active Directoryドメイン(AD DS)で の組織内PCの管理  Windows統合認証 / Kerberosによる PCとアプリケーション間のSSO  ドメインネットワーク内に限定  モバイル、クラウドへの展開時に障壁  AD FS / WAPで橋渡しをするものの限定的 (社内PC⇒社外はOK、社外・モバイルは・・・) 6 IdP Apps Organization Network Office365 SAML/OIDC SPAD DS AD FS Windows Apps Firewall VPN or WAP (Reverse Proxy) Single Sign On Non SSO ID/PWD AD DS / Active Directory Domain Services AD FS / Active Directory Federation Services WAP / Web Application Proxy
  7. 7. True SSOの実現に向けて – 目指す姿  どこにからでも、どんなデバイスからでも、デバ イス~アプリケーション間でのSSOを実現  必要な要素  どこからでも使えるID管理基盤  どこからでも使えるデバイス管理基盤  各基盤に対応するデバイス  過渡期における移行も大事  レガシー基盤との橋渡し 7 IdP Apps Organization Network Office365 SAML/OIDC SPAD DS AD FS Windows Apps Firewall VPN or WAP (Reverse Proxy) Single Sign On Non SSO ID/PWD どこからでも使える - ID基盤 - デバイス管理基盤 対応デバイス 対応デバイス 橋渡し
  8. 8. キーワード  Microsoft Azure Active Directory(Azure AD) Device Registration Service(DRS)  Windows 10 Microsoft Passport Web Account Manager AAD Token Broker Plugin  Windows Hello 8
  9. 9. Microsoft Azure Active Directory  Microsoft提供のIDaaS  IdP機能  Office365等、SAML/OIDC対応アプリ ケーションとの連携、プロビジョニング  OAuth2.0によるWebAPI保護  デバイス管理機能(DRS)  デバイスの登録とポリシーの強制  AD FS等のIdPとの連携、Graph APIに よるID・デバイス情報の同期 9 External IdPs Azure Active Directory Apps Office365 SAML/OIDC SP WebAPI AD FS SAML IdP Microsoft Account IdP (SAML/OIDC) AuthZ (OAuth2.0)Device Mgmt Reporting http://www.slideshare.net/naohiro.fujie/azure-adidentity
  10. 10. Windows 10  2015年夏~リリース予定  PC向け、モバイル向けのエディション  ユニバーサル・アプリケーション・プラット フォームによるアプリケーションの共通化  Azure ADとの統合の実装  Microsoft Passport  生体認証の実装  Windows Hello 10
  11. 11. Azure AD と Windows 10で実現する姿 11 Internal Services Azure Active Directory Cloud Services Office365 SAML/OIDC SP WebAPI AD FS AD DS IdP (SAML/OIDC) AuthZ (OAuth2.0)Device Mgmt Reporting Store Apps Registered Windows 10 Devices (Internal or External) Sync Org’s Apps Single Sign On  統一されたID/デバイス管理  クラウド、オンプレのHUBとして機能  統一ポリシーの適用  デバイスの種類、アプリケーションの 種類に依存しないSSO  Webアプリケーション、ネイティブアプ リケーション、デバイスを跨いだSSO  PC、モバイルに向けた共通のエクス ペリエンス
  12. 12. Windows 10 + FIDO 2.0 =Azure AD Join 12
  13. 13. Azure AD Join~アプリケーション利用の流れ - Microsoft Passport / Windows Hello  Device Registration(Azure AD Join)  Azure AD DRSによるデバイス証明書の発行とプロビジョニング  Key Pairの生成(Device Key / User Key)とAzure AD上に公開鍵の登録  Azure ADによって発行されたNGC KEY-IDをデバイスのTPMにストア  User Logon(デバイスへのログイン)  ストアされたKGC KEY-IDと秘密鍵へPIN / 生体情報などを使ってアクセス  NGC KEY-IDを秘密鍵で署名してサインイン要求  Primary Refresh Token(PRT)を発行  Access to Application  Azure ADへPRTを送付して代わりにAccess Tokenを受け取る  Access Tokenを使ってアプリケーションを利用 13 Windows Hello Microsoft Passport
  14. 14. Device Registration 14 IdP Store / TPM Azure AD Other IdP Private Key Windows 10 Device Azure AD AuthN Service Device Registration Service Key Registration Service 1.Obtain Token to Access DRS 2.Device Registration Request 3.Provision Device Certificate 5.Register Public Key 4.Generate Key Pair 6.Provision NGC KEY-ID NGC KEY-ID Keys …
  15. 15. Device Registration 15
  16. 16. 16<RepLookup v="5"> <G>D576978E-9DC9-4D48-8E03-479391E35482</G> <O>00000000-0000-0000-0000-000000000000</O> <D>10.0.8110.6</D> <C>11.00.10011.0</C> <OS>10.0.10074.0.0</OS> <I>9.11.10011.0</I> <L>en-US</L> <RU></RU><RI>0.0.0.0</RI> <R> <Rq> <URL>https://clouddomainjoin.azurewebsites.net/9/join.html</URL> <O>POST</O> <T>TOP</T> <HIP>127.0.0.1</HIP> </Rq> </R> <WA> <PI>Microsoft.Windows.CloudExperienceHost_10.0.10074.0_neutral_neutral_cw5n1h2txyewy</PI> <AI>Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy!App</AI> <UI>b749ce6e7603e790</UI> </WA> <PRT>668</PRT> </RepLookup> <RepLookupResponse> <RepLookupResult> <Rs> <M>azurewebsites.net</M> <C>PHSH:005:0:1</C> <R>0:1</R> <L>10080</L> <S>0</S> </Rs> </RepLookupResult> <Y>100</Y> <T>00000000-0000-0000-0000-000000000000</T> <E>0</E> </RepLookupResponse> 1. GET https://clouddomainjoin.azurewebsites.net/9/join.html HTTP/1.1 2. POST https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=xxx&MSURS-MAC=yyy HTTP/1.1
  17. 17. 17 <RepLookup v="5"> <G>D576978E-9DC9-4D48-8E03-479391E35482</G> <O>00000000-0000-0000-0000-000000000000</O> <D>10.0.8110.6</D> <C>11.00.10011.0</C> <OS>10.0.10074.0.0</OS> <I>9.11.10011.0</I> <L>en-US</L> <RU></RU> <RI>0.0.0.0</RI> <R> <Rq> <URL>https://clouddomainjoin.azurewebsites.net/9/join.html</URL> <O>PRE</O> <T>TOP</T> <HIP>127.0.0.1</HIP> </Rq> </R> <WA> <PI>Microsoft.Windows.CloudExperienceHost_10.0.10074.0_neutral_neutral_cw5n1h2txyewy</PI> <AI>Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy!App</AI> <UI>b749ce6e7603e790</UI> </WA> <PRT>668</PRT> </RepLookup> <RepLookupResponse> <RepLookupResult> <Rs> <M>azurewebsites.net</M> <C>PHSH:005:0:1</C> <R>0:1</R> <L>10080</L> <S>0</S> </Rs> </RepLookupResult> <Y>100</Y> <T>00000000-0000-0000-0000-000000000000</T> <E>0</E> </RepLookupResponse> 3. POST https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=xxx&MSURS-MAC=yyy HTTP/1.1
  18. 18. 18 { "issuer":"https://sts.windows.net/{tenantid}/", "authorization_endpoint":"https://login.windows.net/common/oauth2/authorize", “token_endpoint":"https://login.windows.net/common/oauth2/token", "token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt"], "jwks_uri":"https://login.windows.net/common/discovery/keys", "response_types_supported":["code","id_token","code id_token","token"], "response_modes_supported":["query","fragment","form_post"], "subject_types_supported":["pairwise"], "scopes_supported":["openid"], "id_token_signing_alg_values_supported":["RS256"], "claims_supported": ["sub","iss","aud","exp","iat","auth_time","acr","amr","nonce","email","given_name","family_name","nickname"], "microsoft_multi_refresh_token":true, "check_session_iframe":"https://login.windows.net/common/oauth2/checksession", "end_session_endpoint":"https://login.windows.net/common/oauth2/logout", "userinfo_endpoint":https://login.windows.net/common/openid/userinfo } 4. GET https://login.windows.net/common/.well-known/openid-configuration HTTP/1.1 5. GET https://login.windows.net/common/oauth2/authorize? client_id=xxx&msafed=0&nonce=yyy&prompt=login& redirect_uri=https%3A%2F%2Fclouddomainjoin.azurewebsites.net%2F%2F9%2Fjoin.html& response_type=id_token&scope=openid+sid&uxoptin=true HTTP/1.1 HTTP/1.1 302 Found Location: https://login.microsoftonline.com/common/oauth2/authorize?client_id=xxx&msafed=0&nonce=yyy&prompt=login&redi rect_uri=https%3A%2F%2Fclouddomainjoin.azurewebsites.net%2F%2F9%2Fjoin.html&response_type=id_token&scope =openid+sid&uxoptin=true
  19. 19. 19 HTTP/1.1 302 Found Location: https://clouddomainjoin.azurewebsites.net//9/join.html#id_token=xxx&session_state=yyy 6. GET https://login.microsoftonline.com/common/oauth2/authorize? client_id=xxx&msafed=0&nonce=6087626556718901&prompt=login& redirect_uri=https%3A%2F%2Fclouddomainjoin.azurewebsites.net%2F%2F9%2Fjoin.html& response_type=id_token&scope=openid+sid&uxoptin=true HTTP/1.1 ユーザ認証、ログイン { "aud": “xxxx", "iss": "https://sts.windows.net/xxxx/", "iat": 1430367703, "nbf": 1430367703, "exp": 1430371603, "ver": "1.0", "tid": “xxxx", "oid": “xxxx", "upn": "yamasaki@xxx.onmicrosoft.com", "puid": “xxxx", "sub": “xxx", "given_name": "Atsuo", "family_name": "Yamasaki", "name": "Atsuo Yamasaki", "amr": [ "pwd" ], "unique_name": "yamasaki@xxx.onmicrosoft.com", "nonce": “xxxx", "sid": “xxxx", "pwd_exp": "3725439", "pwd_url": "https://portal.microsoftonline.com/ChangePassword.aspx" } 7. GET https://clouddomainjoin.azurewebsites.net//9/join.html HTTP/1.1
  20. 20. 20 <RepLookup v="5"> <G>D576978E-9DC9-4D48-8E03-479391E35482</G> <O>00000000-0000-0000-0000-000000000000</O> <D>10.0.8110.6</D> <C>11.00.10011.0</C> <OS>10.0.10074.0.0</OS> <I>9.11.10011.0</I> <L>en-US</L> <RU>https://login.microsoftonline.com/common/oauth2/authorize? client_id=xxxx&msafed=0&nonce=xxxx&prompt=login& redirect_uri=https%3A%2F%2Fclouddomainjoin.azurewebsites.net%2F%2F9%2Fjoin.html& response_type=id_token&scope=openid+sid&uxoptin=true </RU> <RI>127.0.0.1</RI> <R> <Rq> <URL>https://clouddomainjoin.azurewebsites.net//9/join.html</URL> <O>POST</O> <T>TOP</T> <HIP>127.0.0.1</HIP> </Rq> </R> <WA> <PI>Microsoft.Windows.CloudExperienceHost_10.0.10074.0_neutral_neutral_cw5n1h2txyewy</PI> <AI>Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy!App</AI> <UI>b749ce6e7603e790</UI> </WA> <PRT>325</PRT> </RepLookup> <RepLookupResponse> <RepLookupResult> <Rs> <M>azurewebsites.net</M> <C>PHSH:005:0:1</C> <R>0:1</R> <L>10080</L> <S>0</S> </Rs> </RepLookupResult> <Y>100</Y> <T>00000000-0000-0000-0000-000000000000</T> <E>0</E> </RepLookupResponse> 8. POST https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=xxx&MSURS-MAC=yyy HTTP/1.1
  21. 21. 21 <RepLookup v="5"> <G>D576978E-9DC9-4D48-8E03-479391E35482</G> <O>00000000-0000-0000-0000-000000000000</O> <D>10.0.8110.6</D> <C>11.00.10011.0</C> <OS>10.0.10074.0.0</OS> <I>9.11.10011.0</I> <L>en-US</L> <RU>https://login.microsoftonline.com/common/oauth2/authorize? client_id=xxxx&msafed=0&nonce=xxxx&prompt=login& redirect_uri=https%3A%2F%2Fclouddomainjoin.azurewebsites.net%2F%2F9%2Fjoin.html& response_type=id_token&scope=openid+sid&uxoptin=true </RU> <RI>127.0.0.1</RI> <R> <Rq> <URL>https://clouddomainjoin.azurewebsites.net//9/join.html</URL> <O>PRE</O> <T>TOP</T> <HIP>127.0.0.1</HIP> </Rq> </R> <WA> <PI>Microsoft.Windows.CloudExperienceHost_10.0.10074.0_neutral_neutral_cw5n1h2txyewy</PI> <AI>Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy!App</AI> <UI>b749ce6e7603e790</UI> </WA> <PRT>325</PRT> </RepLookup> <RepLookupResponse> <RepLookupResult> <Rs> <M>azurewebsites.net</M> <C>PHSH:005:0:1</C> <R>0:1</R> <L>10080</L> <S>0</S> </Rs> </RepLookupResult> <Y>100</Y> <T>00000000-0000-0000-0000-000000000000</T> <E>0</E> </RepLookupResponse> 9. POST https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=xxx&MSURS-MAC=yyy HTTP/1.1
  22. 22. Azure AD Other IdP Private KeyNGC KEY-ID Keys … User Login 22 IdP Store / TPM Windows 10 Azure AD AuthN Service 1.Obtain Nonce with empty request 3.Open IdP Store with PIN/IRIS/Finger 2.Nonce 4.Sign NGC KEY-ID,Nonce with Private Key as Request Primary Refresh Token 5.Provision Primary Refresh Token
  23. 23. 23
  24. 24. Azure AD Other IdP Private KeyNGC KEY-ID Keys … Access to Application 24 IdP Store / TPM Windows 10 Azure AD AuthN Service Primary Refresh Token Application - OIDC RP Web Account Manager ms-appx- web://Microsoft.AAD.BrokerPl ugIn/app-sid AAD Token Broker Plugin Custom Web Account Provider Application - Store App 1,6.Access 2.Token Request 4.Exchange Refresh Token to Access Token 5.Access Token 3.Get Primary Refresh Token
  25. 25. 25https://login.microsoftonline.com/common/oauth2/authorize? resource=https%3a%2f%2fmanagement.core.windows.net%2f¥u0026 response_mode=form_post¥u0026 response_type=code+id_token¥u0026 scope=user_impersonation+openid¥u0026 state=OpenIdConnect.AuthenticationProperties%3dxxxx¥u0026 nonce=xxx¥u0026 client_id=xxx¥u0026 redirect_uri=https%3a%2f%2fportal.azure.com%2fsignin%2findex¥u0026 site_id=501430 1. GET https://portal.azure.com/ HTTP/1.1 2. GET https://portal.azure.com/signin/index/ HTTP/1.1 3. GET https://login.microsoftonline.com/common/oauth2/authorize?xxx Cookie: ESTSSSO=eyJjdHxxx { "refresh_token": “xxx", "iat": 1429925477 } <form method="POST" name="hiddenform" action="https://portal.azure.com/signin/index"> <input type="hidden" name="code" value=“xxx" /> <input type="hidden" name="id_token" value="eyJ0eXxxx" /> <input type="hidden" name="state" value="OpenIdConnect.AuthenticationProperties=ptNKxxx" /> <input type="hidden" name="session_state" value=“xxx" /> <noscript><p>Script is disabled. Click Submit to continue.</p> <input type="submit" value="Submit" /> </noscript> </form>
  26. 26. 26{ "aud": “xxxx", "iss": "https://sts.windows.net/xxx/", "iat": 1429925228, "nbf": 1429925228, "exp": 1429929128, "ver": "1.0", "tid": “xxx", "oid": “xxx", "upn": "yamasaki@xxx.onmicrosoft.com", "puid": “xxx", "sub": “xxx", "given_name": "Atsuo", "family_name": "Yamasaki", "name": "Atsuo Yamasaki", "amr": [ "pwd" ], "unique_name": "yamasaki@xxx.onmicrosoft.com", "nonce": “xxx", "c_hash": “xxx", "pwd_exp": "4167914", "pwd_url": "https://portal.microsoftonline.com/ChangePassword.aspx" } 4. POST https://portal.azure.com/signin/index HTTP/1.1
  27. 27. まとめ 27
  28. 28. まとめ  遂にKerberosを捨てる時が来た?  ドメイン内SSOとWebSSOの間の大きな溝をようやく越えられるか?  過渡期をどうやって乗り越えるかがインテグレータの腕の見せ所かも  標準化に期待  Windows 10以外への展開が気になる  まだ見えない部分が多い・・・  Windows 10の実装をFIDO 2.0のSPECへ反映  Windows 10がこれからなのでFIDO 2.0もこれから  Windows Helloは現状のTechnical Previewには実装されてきていない 28
  29. 29. 参考情報  [Microsoft Virtual Academy]クラウド時代の Active Directory 次の一手シリーズ  http://goo.gl/Lh7rhi  [Microsoft Virtual Academy]Windows 10 Technical Preview の基礎  http://goo.gl/qG6a7I  [Microsoft Virtual Academy]Microsoft Azure インフラストラクチャ ソリューションの実装  http://goo.gl/lD2MMz  [Windows10]デバイス&サービス間のシングルサインオンの仕組み  http://goo.gl/LBUONM 29

×