0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure AD B2C - Custom Policyを作成する

Posted at

Azure Active Directory B2Cでは、Custom Policyを設定することで様々な処理をカスタマイズすることができる。しなしながらこのCustom Policyはカスタマイズ性が高い反面、独自の概念を理解する必要があり、取っつきにくい機能となっている。以前に自身の理解を深めるために簡単なカスタマイズを試したみたので、ポイントを整理しておく。

作成したもの

OpenID Connect (OAuth2) のAuthorization Endpointにてログイン画面を表示する際に、新規登録へのリンクの表示・非表示をクエリパラメータで制御する。

  • 表示 ?p=B2C_1A_SIGNUP_SIGNIN_WITH_PARAMETER&hide_sign_up_link=false&...
  • 非表示 ?p=B2C_1A_SIGNUP_SIGNIN_WITH_PARAMETER&hide_sign_up_link=true&...

完成版はこちら:SignUpOrSignInWithParameter.xml

Custom Policy作成のポイント

Custom Policyの概念を理解する

大まかなイメージを掴むには公式ドキュメントよりもこちらの記事がわかりやすい。

Azure AD B2C カスタムポリシーのスターターパック (LocalAccounts) の解説 - Qiita

参考事例を探す

Microsoftが管理しているCustom Policyの事例集があるため、作りたいものに近い事例を探してみると良い。

今回の場合はunit-test / Show sign-up linkが参考になった。

Authorization Endpointのクエリパラメータを受け取る

OAuth2 key-value parameters Claim Resolverを設定することでクエリパラメータの読み込みができる。今回のケースでは {OAUTH-KV:show_signup_link} というClaimを定義すればよい。

参考:Prepopulate values on Azure b2C from the query parameters using Custom Policies - Stack Overflow

Sign Inボタンの表示・非表示を制御する

Self Asserted Attribute ProviderのMetadataのうち、setting.showSignupLink を設定することで制御できる。

その他の注意点

  • Custom Policyの変更は反映に数分かかることがある。
    • 変更が反映されているかがわからないため開発時のデバッグがしにくいが、現時点では制約とのことで、5分程度待ってから動作確認をするといった対策を取る他ない。(参考:AAD B2C - "Lag" after custom policy upload - Microsoft Q&A
  • デバッグにログを利用できるが、設定方法と出力内容の理解のハードルが高い。
    • ログ出力にもCustom Policyの設定が必要となる。(参考:Set up Application Insights
    • ログ出力内容の詳細なドキュメントはなく、意味を推測しながら読み解く必要がある。
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?