【第3回】ユーザージャーニーとは の続き
はじめに
この記事に興味を持っていただきありがとうございます。Azure AD B2C のカスタムポリシーを探っていくシリーズ第 4 回です。前回はカスタムポリシーを構成するコンポーネント「ユーザージャーニー」について調べました。今回はいよいよポリシーを作っていきます。
ポリシーを構成するもの
ポリシーは XML ファイルとして作成します。カスタムポリシースターターパックに XSD がありましたので、Visual XSDを使って図にしてみました。
かなり巨大ですね。テクニカルプロファイルは ClaimsProvider
とRelyingParty
の下にありますが、どちらがどんなんでしょう?あとで調べてみます。ユーザージャーニーは UserJourneys
の下にありました。
エレメントをひとつずつ見ていきたいところなのですが、まずは動くところから入らないと、気持ち的に挫折することが予想されますので、一番外側であるユーザージャーニーを作成することから始めていきます。
ユーザージャーニーを構成するもの
UserJourney
の下には、いくつか要素があります。
ユーザージャーニーで一番肝要(と思われる)オーケストレーションステップOrchestrationStep
を見てみます。
OrchestrationStep
OrchestrationStep
の下にも、いくつか要素があります。
OrchestrationStep
要素には、Order
とType
属性が必須になっています。Order
は、読んで字のごとく、ステップの順番を制御するものと思われます。Type
属性でオーケストレーションステップのタイプを指定します。
ぼんやりと何をやればよいか見えてきました。認証プロバイダを選択させ、クレームをやり取りし、トークンを送ればよさそうです。
ユーザージャーニー作成の準備をする
いよいよユーザージャーニーを作っていきます。内容は、Facebook と Azure AD のいずれかでサインインするものにしたいと思います。
早速といきたいですが、ユーザージャーニーそのものに取り掛かる前に、いくつか準備が必要です。
スターターパックを取得する
ゼロからポリシーを作成するのは難しすぎるので、カスタムポリシースターターパックをベースにして作業していきます。
カスタムポリシースターターパックをダウンロードすると、4 つのポリシーが入っています。
- LocalAccounts
- SocialAccounts
- SocialAndLocalAccounts
- SocialAndLocalAccountsWithMfa
全部入りの SocialAndLocalAccountsWithMfa を基底にして始めてみます。
テナント ID を書き換える
これから作成するポリシーファイルの基底となるTrustFrameworkBase.xml
ファイルと、TrustFrameworkExtensions.xml
ファイルを書き換えます。書き換え箇所は、TrustFrameworkPolicy
エレメントのTenantId
属性とPublicPolicyUri
属性です。
tedblogb2cというのがテナント名です。ここを環境に合わせてください。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
PolicySchemaVersion="0.3.0.0"
TenantId="tedblogb2c.onmicrosoft.com"
PolicyId="B2C_1A_TrustFrameworkBase"
PublicPolicyUri="http://tedblogb2c.onmicrosoft.com/B2C_1A_TrustFrameworkBase">
TrustFrameworkExtensions.xml
ファイルのBasePolicy
> TenantId
も書き換えます。ここで継承元を指定しています。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
PolicySchemaVersion="0.3.0.0"
TenantId="tedblogb2c.onmicrosoft.com"
PolicyId="B2C_1A_TrustFrameworkBase"
PublicPolicyUri="http://tedblogb2c.onmicrosoft.com/B2C_1A_TrustFrameworkBase">
<BasePolicy>
<TenantId>tedblogb2c.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkBase</PolicyId>
</BasePolicy>
Facebook アプリのクライアント ID を書き換える
TrustFrameworkExtensions.xml
ファイルのClaimsProviders
の下に、Facebook の設定があります。ここにある client_id を作成したアプリに合わせて書き換えます。
<ClamsProviders>
<ClaimsProvider>
<DisplayName>Facebook</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Facebook-OAUTH">
<Metadata>
<Item Key="client_id">0000111122223333</Item>
Facebook へのアプリケーション登録とクライアント ID の取得については、Microsoft のチュートリアルを参照してください。
Azure AD 認証プロバイダを追加する
使いたい Azure AD テナントを認証プロバイダとして追加します。Micrsoft のドキュメントに従って作成します。
Azure AD アプリケーションを追加する
もしまだ作成していなければ、Azure AD へアプリケーションを追加します(追加する先は、ユーザーが存在するテナントです)。
Azure AD へのアプリケーション追加方法はMicrosoft のドキュメントを参照してください。追加時の設定項目を下記に挙げておきます。tedblogb2cはテナント名です。環境に合わせてください。
項目 | 値 |
---|---|
名前 | 任意の気の利いた名前にします。 |
Supported account types | Accounts in this organizational directory only (Single tenant) を選びます。 |
Redirect URI 種別 | Web を選びます。 |
Redirect URI | このような URI にします。 https://tedblogb2c.b2clogin.com/tedblogb2c.onmicrosoft.com/oauth2/authresp |
認証プロバイダを追加する
Azure AD とは OpenID Connect で接続します。設定するにあたり、以下の値が必要になります。
項目 | 説明 |
---|---|
ドメイン | なにかユニークな名前だそうです。 |
METADATA URL | .well-known/openid-configuration の URL です。 |
クライアント ID | Azure AD テナントに登録したアプリケーションのクライアント ID です。 |
クライアントシークレット | 先の登録アプリケーションのシークレットです。 |
表示名 | エンドユーザーが見ることになる認証の選択画面に表示される名前です。 |
値が用意できたらTrustFrameworkExtensions.xml
ファイルのClaimsProviders
の下にClaimProvider
を新たに追加します。
<ClaimsProviders>
<ClaimsProvider>
<Domain>tedblog</Domain>
<DisplayName>My AAD Tenant</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="AAD-OIDC">
<DisplayName>My AAD Tenant</DisplayName>
<Protocol Name="OpenIdConnect" />
<Metadata>
<Item Key="METADATA">https://login.microsoftonline.com/tedblog.onmicrosoft.com/v2.0/.well-known/openid-configuration</Item>
<Item Key="client_id">00000000-1111-2222-3333-44445555666</Item>
<Item Key="response_types">code</Item>
<Item Key="scope">openid profile</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret"
StorageReferenceId="B2C_1A_MyTenantSecret" />
</CryptographicKeys>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId"
PartnerClaimType="oid" />
<OutputClaim ClaimTypeReferenceId="tenantId"
PartnerClaimType="tid" />
<OutputClaim ClaimTypeReferenceId="givenName"
PartnerClaimType="given_name" />
<OutputClaim ClaimTypeReferenceId="surName"
PartnerClaimType="family_name" />
<OutputClaim ClaimTypeReferenceId="displayName"
PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="authenticationSource"
DefaultValue="socialIdpAuthentication"
AlwaysUseDefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="identityProvider"
PartnerClaimType="iss" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation
ReferenceId="CreateRandomUPNUserName" />
<OutputClaimsTransformation
ReferenceId="CreateUserPrincipalName" />
<OutputClaimsTransformation
ReferenceId="CreateAlternativeSecurityId" />
<OutputClaimsTransformation
ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement
ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
クライアントシークレットは XML ファイルへ直接記述せず、Azure ポータルから設定します。
- ADB2C テナントにある Azure AD B2C リソースを開きます。
- Policies の下にある Identity Experience Framework をクリックします。
- Manage の下にある Policy keys をクリックします。
- +Add をクリックし、下表のように値を入力し、Create をクリックします。
入力項目 | 説明 |
---|---|
Options | Manualを選択します。 |
Name | 先の XML で、StorageReferenceId 属性に設定した名前になります。頭の B2C_1A_ は自動的につくので不要です。 |
Secret | 取得したクライアントシークレットです。 |
Set activation date | 必要に応じて日時を設定します。空で OK です。 |
Set expiration date | 必要に応じて日時を設定します。空で OK です。 |
Key usage | Signatureを選択します。 |
まとめ
ここまでご購読ありがとうございました。今回はユーザージャーに作成の準備として、認証プロバイダを作成しました。だいぶ長くなってしまったので、いったんここで終わります。
次回はユーザージャーニーを作成して動かしてみます。
~~~~~ ”Azure AD B2Cカスタムポリシーについて”【全5回】シリーズ ~~~~~
☆【第1回】Azure AD B2C カスタムポリシーについて
☆【第2回】テクニカルプロファイルとは
☆【第3回】ユーザージャーニーとは
☆【第4回】カスタムポリシーを作成してみる
☆【最終回】カスタムポリシーを作成してみる(2)