Power Apps と Azure AD B2C を統合する (カスタム ポリシー)

Pocket

はじめに

みなさん、こんにちは。今回は Power Apps と Azure AD B2C ネタです。この数年の Power Apps の進化が早すぎて全く追いつけていない私ですが、本記事では Power Apps ポータルの ID プロバイダーとして Azure AD B2C を構成する方法をご紹介したいと思います。

Power Apps ポータルでは、Azure AD、Azure AD B2C テナントや、Facebook、Twitter、Google などを ID プロバイダーとして構成することが可能です。Azure AD B2C を ID プロバイダーとして構成すると、下図のように、Azure AD B2C のローカル アカウントを使用して Power Apps ポータルにサインアップ/サインインが行えます。

AzureADB2C

下記の公式ドキュメントでは、Azure AD B2C ”ユーザー フロー” を使用したチュートリアルが紹介されていますが、カスタム ポリシーを使用するシナリオに関しては、サポート有無含めて言及されていなかったため、試しにやってみた結果のメモです。

結論からお伝えすると、「カスタム ポリシーを使用することは可能」でした。

前提

Azure AD B2C のカスタム ポリシーは、次の公式ドキュメントのチュートリアルに沿って構成しておく必要があります。なお、カスタム ポリシーを使用する場合、Azure AD B2C テナントに Azure サブスクリプションをリンクしておく必要があります。

Azure AD B2C 側の設定

カスタム ポリシーのカスタマイズ

tfp が含まれる Issuer (iss) クレームを使用するようにカスタム ポリシーをカスタマイズする必要があります。具体的には、TrustFrameworkBase.xml に定義された技術プロファイル ”JwtIssuer” を探し、下記 12 行目の記述をメタデータに追加してあげます。XML ファイルを保存したら Azure Portal からアップロードします。

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="JwtIssuer">
      <DisplayName>JWT Issuer</DisplayName>
      <Protocol Name="None" />
      <OutputTokenFormat>JWT</OutputTokenFormat>
      <Metadata>
        <Item Key="client_id">{service:te}</Item>
        <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
        <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
        <Item Key="IssuanceClaimPattern">AuthorityWithTfp</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
        <Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" />
      </CryptographicKeys>
      <InputClaims />
      <OutputClaims />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

次に、Azure Portal から B2C_1A_SIGNUP_SIGNIN を選択し、OpenID Connect 検出エンドポイントのリンクをクリックします。

AzureADB2C

後の Power Apps ポータルの設定に必要となるため、issuer の URL をコピーし控えておきます。

アプリの登録

Power Apps と連携するには、Azure AD B2C テナントにアプリを登録しておく必要があります。先ずは、アプリのリダイレクト URI を Power Apps から取得する必要があります。対象のポータルの [・・・] – [設定] – [認証設定] をクリックします。

Azure Active Directory B2C – [構成] をクリックします。現在、Azure AD B2C を構成する方法に ”自動構成”、”手動構成” の 2 つがありますが、カスタム ポリシーを使用する場合は ”手動構成” で行う必要があります。

プロバイダー名に任意の名前を付けたら [次へ] をクリックします。

応答 URL をコピーして控えます。

Azure Portal 画面に戻ります。[Azure AD B2C] – [アプリの登録] – [新規登録] をクリックします。

任意のアプリ名を入力し、リダイレクト URI には先ほど Power Apps の画面からコピーした応答 URL を貼り付け [登録] します。

AzureADB2C

登録後に表示されるアプリのクライアント ID をコピーして控えておきます。

[認証] メニューへ進み、暗黙的な許可およびハイブリッド フローにある [ID トークン] と [アクセス トークン] にチェックを付けて [保存] します。

以上で Azure AD B2C 側の設定は完了です。

Power Apps 側の設定

Power Apps ポータルの設定画面へ戻り、各プロパティを設定していきます。

  • オーソリティ:<Issuer URL>
  • クライアント ID:<アプリのクライアント ID>
  • 既定のポリシー ID:B2C_1A_SIGNUP_SIGNIN

それぞれのプロパティを設定したら [確認] をクリックして構成を完了させます。

以上で、Power Apps とカスタム ポリシーの統合は完了です。冒頭の GIF のように、カスタム ポリシーを使用してサインアップ/サインインが行えれましたら成功です。※ Power Apps 側の反映には数分程度を要するため、うまくいかないようであれば少しお時間を空けましょう。

おわりに

Azure AD B2C のカスタム ポリシーはプロフェッショナル向けの機能であるため、可能な限りユーザー フローで構成することが推奨されていますが、要件に応じてカスタム ポリシーを検討しなければなりません。Power Apps からカスタム ポリシーを使用してサインアップ/サインインできるのであれば、かなり柔軟にカスタマイズができるので必要に応じて利用を検討ください。

それでは、よい Azure AD ライフをっ😎



Pocket

コメントを残す

メールアドレスが公開されることはありません。