55
Microsoft Tech Summit 2017

Azure AD による Web API の 保護

Embed Size (px)

Citation preview

Page 1: Azure AD による Web API の 保護

Microsoft Tech Summit 2017

Page 2: Azure AD による Web API の 保護

Azure AD を使用して、

ここを誰から、どう守るか?

Page 3: Azure AD による Web API の 保護
Page 4: Azure AD による Web API の 保護

PowerShell

https://testpsfunction.azurewebsites.net/api/HttpTriggerPowerShell1?code=

TvXkdY2WKsev/wFkpyik09RZosbMmNsAe0gg8G3Tpsb8uV28BodA4Q==

Functions Key

Page 5: Azure AD による Web API の 保護
Page 6: Azure AD による Web API の 保護

PowerShell

Page 7: Azure AD による Web API の 保護

Multitenant 設定

PowerShell

Page 8: Azure AD による Web API の 保護

Function Key

URL は外部から隠ぺい

Page 9: Azure AD による Web API の 保護
Page 10: Azure AD による Web API の 保護

今回のターゲット

Page 11: Azure AD による Web API の 保護
Page 12: Azure AD による Web API の 保護

B2C

Page 13: Azure AD による Web API の 保護
Page 14: Azure AD による Web API の 保護

API

Page 15: Azure AD による Web API の 保護

APIAzure APIManagement

Application

Subscription Key

https://xxxxxxxxx.portal.azure-api.net/signin-aad

Page 16: Azure AD による Web API の 保護
Page 17: Azure AD による Web API の 保護

③ ユーザーIDやロールによって API に対する権限を変えたい

Page 18: Azure AD による Web API の 保護

APIAzure APIManagement

Application

Page 19: Azure AD による Web API の 保護

<tenant ID>

<tenant ID>

<tenant ID>

Page 20: Azure AD による Web API の 保護

• validate-jwt : JWT を検証して操作を承認する

RS256 署名アルゴリズム ー OpenID 構成エンドポイントからキーを受け取る

• 認証ポリシー

https://docs.microsoft.com/ja-jp/azure/api-management/api-management-policy-reference

Page 21: Azure AD による Web API の 保護

<policies>

<inbound>

<base />

<rewrite-uri template="/HttpTriggerPowerShell1?code=TvXkdY2WKsev/wFxxxxx==&amp;name={username}" />

</inbound>

<backend>

<base />

</backend>

<outbound>

<base />

</outbound>

<on-error>

<base />

</on-error>

</policies>

Page 22: Azure AD による Web API の 保護

・・・・

<inbound>

<base />

<rewrite-uri template="/HttpTriggerPowerShell1?code=TvXkdY2WKsev/wFxxxxx==&amp;name={username}" />

<validate-jwt

failed-validation-error-message="Unauthorized. Access token is missing or invalid."

failed-validation-httpcode="401" header-name="Authorization">

<openid-config url=“https://login.microsoftonline.com/テナントURL/.well-known/openid-configuration" />

<audiences><audience>チェックしたいアプリケーションのクライアントID</audience>

</audiences>

<required-claims><claim name=“チェックしたいクレーム名" match="all">

<value>クレーム内の値</value>

</claim>

</required-claims>

</validate-jwt>

<inbound>・・・・

Page 23: Azure AD による Web API の 保護

<validate-jwt failed-validation-error-message="Unauthorized. Access token is missing or

invalid." failed-validation-httpcode="401" header-name="Authorization">

<openid-config

url="https://login.microsoftonline.com/pharaojp.onmicrosoft.com/.well-known/openid-

configuration" />

<audiences>

<audience>e55757f2-92ba-4422-8aa1-2ed25cbeece2</audience>

</audiences>

<required-claims>

<claim name="name" match="all">

<value>admin</value>

</claim>

</required-claims>

</validate-jwt>

Page 24: Azure AD による Web API の 保護
Page 25: Azure AD による Web API の 保護

https://jwt.io/

OIDCトークンの場合は RS256を選択

Page 26: Azure AD による Web API の 保護
Page 27: Azure AD による Web API の 保護

IdPに応じた

プロトコルを実装

Page 28: Azure AD による Web API の 保護

APIAzure APIManagement

Application

Page 29: Azure AD による Web API の 保護

基本的に、プロトコルは意識しない

Page 30: Azure AD による Web API の 保護

Weibo

QQ

WeChat

a

preview

preview

OIDC/OAuth2.0 で実装

Page 31: Azure AD による Web API の 保護

Weibo

QQ

WeChat

a

preview

preview

Identity Experience Framework• SAML 2.0• OAuth 2.0• OIDC

Preview

Identity Experience Framework• SAML 2.0• OAuth 2.0• OIDC

Preview

Page 32: Azure AD による Web API の 保護
Page 33: Azure AD による Web API の 保護
Page 34: Azure AD による Web API の 保護
Page 35: Azure AD による Web API の 保護

c9687145-xxxx-xxxx-xxxxxxxxxxxx

Page 36: Azure AD による Web API の 保護
Page 37: Azure AD による Web API の 保護

.auth/login/aad/callback を追加

Page 38: Azure AD による Web API の 保護
Page 39: Azure AD による Web API の 保護
Page 40: Azure AD による Web API の 保護
Page 41: Azure AD による Web API の 保護

テナントID

控えておいた「アプリケーションID」を入力

https//sts.windwos.net/<テナントID>

Page 42: Azure AD による Web API の 保護

https://testpsfunction.azurewebsites.net/api/HttpTriggerPo

werShell1?code=TvXkdY2WKsev/wFkpyik09RZosbMmNsAe

0gg8G3Tpsb8uV28BodA4Q==

Page 43: Azure AD による Web API の 保護
Page 44: Azure AD による Web API の 保護
Page 45: Azure AD による Web API の 保護
Page 46: Azure AD による Web API の 保護
Page 47: Azure AD による Web API の 保護
Page 48: Azure AD による Web API の 保護
Page 49: Azure AD による Web API の 保護
Page 50: Azure AD による Web API の 保護
Page 51: Azure AD による Web API の 保護
Page 52: Azure AD による Web API の 保護
Page 53: Azure AD による Web API の 保護
Page 54: Azure AD による Web API の 保護
Page 55: Azure AD による Web API の 保護