FIDO in Windows10

29
FIDO in Windows10 MVP for Forefront Identity Manager Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp 1

Transcript of FIDO in Windows10

Page 1: FIDO in Windows10

FIDO in Windows10MVP for Forefront Identity Manager

Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp

1

Page 2: FIDO in Windows10

自己紹介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

Page 3: FIDO in Windows10

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/

Page 4: FIDO in Windows10

Agenda

True SSOの実現に向けて

Windows 10 + FIDO 2.0 = Azure AD Join

まとめ

4

Page 5: FIDO in Windows10

True SSOの実現に向けて

5

Page 6: FIDO in Windows10

True SSOの実現に向けて - 過去~現在

Active Directoryドメイン(AD DS)での組織内PCの管理

Windows統合認証 / KerberosによるPCとアプリケーション間のSSO

ドメインネットワーク内に限定

モバイル、クラウドへの展開時に障壁

AD FS / WAPで橋渡しをするものの限定的

(社内PC⇒社外はOK、社外・モバイルは・・・)

6

IdPApps

Organization Network

Office365SAML/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 ServicesAD FS / Active Directory Federation ServicesWAP / Web Application Proxy

Page 7: FIDO in Windows10

True SSOの実現に向けて – 目指す姿

どこにからでも、どんなデバイスからでも、デバイス~アプリケーション間でのSSOを実現

必要な要素

どこからでも使えるID管理基盤

どこからでも使えるデバイス管理基盤

各基盤に対応するデバイス

過渡期における移行も大事

レガシー基盤との橋渡し

7

IdPApps

Organization Network

Office365SAML/OIDC SPAD DS AD FS Windows

Apps

Firewall

VPN or WAP(Reverse Proxy)

Single Sign On

Non SSO

ID/PWD

どこからでも使える- ID基盤-デバイス管理基盤

対応デバイス

対応デバイス

橋渡し

Page 8: FIDO in Windows10

キーワード

Microsoft Azure Active Directory(Azure AD)

Device Registration Service(DRS)

Windows 10

Microsoft Passport

Web Account Manager

AAD Token Broker Plugin

Windows Hello

8

Page 9: FIDO in Windows10

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 SPWebAPI

AD FSSAML IdP

MicrosoftAccount

IdP(SAML/OIDC)

AuthZ(OAuth2.0)Device

Mgmt

Reporting

http://www.slideshare.net/naohiro.fujie/azure-adidentity

Page 10: FIDO in Windows10

Windows 10

2015年夏~リリース予定

PC向け、モバイル向けのエディション

ユニバーサル・アプリケーション・プラットフォームによるアプリケーションの共通化

Azure ADとの統合の実装

Microsoft Passport

生体認証の実装

Windows Hello

10

Page 11: FIDO in Windows10

Azure AD と Windows 10で実現する姿11

Internal Services Azure Active Directory Cloud Services

Office365

SAML/OIDC SPWebAPI

AD FSAD 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、モバイルに向けた共通のエクスペリエンス

Page 12: FIDO in Windows10

Windows 10 +FIDO 2.0=Azure AD Join

12

Page 13: FIDO in Windows10

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

WindowsHello

MicrosoftPassport

Page 14: FIDO in Windows10

Device Registration14

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.GenerateKey Pair

6.Provision NGC KEY-IDNGC KEY-ID

Keys …

Page 15: FIDO in Windows10

Device Registration15

Page 16: FIDO in Windows10

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

Page 17: FIDO in Windows10

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

Page 18: FIDO in Windows10

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 FoundLocation: https://login.microsoftonline.com/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

Page 19: FIDO in Windows10

19

HTTP/1.1 302 FoundLocation: 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": "[email protected]","puid": “xxxx","sub": “xxx","given_name": "Atsuo","family_name": "Yamasaki","name": "Atsuo Yamasaki",

"amr": ["pwd"

],"unique_name": "[email protected]","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

Page 20: FIDO in Windows10

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

Page 21: FIDO in Windows10

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

Page 22: FIDO in Windows10

Azure AD

Other IdP

Private KeyNGC KEY-ID

Keys …

User Login22

IdP Store / TPM

Windows 10

Azure AD

AuthN Service

1.Obtain Noncewith empty request

3.Open IdP Storewith PIN/IRIS/Finger

2.Nonce

4.Sign NGC KEY-ID,Noncewith Private Key as Request

PrimaryRefreshToken

5.Provision PrimaryRefresh Token

Page 23: FIDO in Windows10

23

Page 24: FIDO in Windows10

Azure AD

Other IdP

Private KeyNGC KEY-ID

Keys …

Access to Application24

IdP Store / TPM

Windows 10

Azure AD

AuthNService

PrimaryRefreshToken

Application- OIDC RP

Web AccountManager

ms-appx-web://Microsoft.AAD.BrokerPl

ugIn/app-sid

AAD TokenBroker 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

Page 25: FIDO in Windows10

25https://login.microsoftonline.com/common/oauth2/authorize?resource=https%3a%2f%2fmanagement.core.windows.net%2f¥u0026response_mode=form_post¥u0026response_type=code+id_token¥u0026scope=user_impersonation+openid¥u0026state=OpenIdConnect.AuthenticationProperties%3dxxxx¥u0026nonce=xxx¥u0026client_id=xxx¥u0026redirect_uri=https%3a%2f%2fportal.azure.com%2fsignin%2findex¥u0026site_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?xxxCookie: 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>

Page 26: FIDO in Windows10

26{"aud": “xxxx","iss": "https://sts.windows.net/xxx/","iat": 1429925228,"nbf": 1429925228,"exp": 1429929128,"ver": "1.0","tid": “xxx","oid": “xxx","upn": "[email protected]","puid": “xxx","sub": “xxx","given_name": "Atsuo","family_name": "Yamasaki","name": "Atsuo Yamasaki","amr": ["pwd"

],"unique_name": "[email protected]","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

Page 27: FIDO in Windows10

まとめ

27

Page 28: FIDO in Windows10

まとめ

遂にKerberosを捨てる時が来た?

ドメイン内SSOとWebSSOの間の大きな溝をようやく越えられるか?

過渡期をどうやって乗り越えるかがインテグレータの腕の見せ所かも

標準化に期待

Windows 10以外への展開が気になる

まだ見えない部分が多い・・・

Windows 10の実装をFIDO 2.0のSPECへ反映

Windows 10がこれからなのでFIDO 2.0もこれから

Windows Helloは現状のTechnical Previewには実装されてきていない

28

Page 29: FIDO in Windows10

参考情報

[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