重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
重要
2021 年 9 月 30 日以降、Google では Web ビューのサインイン サポートが非推奨になります。 アプリで Web ビューが埋め込まれたユーザーを認証し、Azure AD B2C との Google フェデレーションを使用している場合、Google Gmail ユーザーは認証できません。 詳細については、こちらを参照してください。
注
Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」の手順を完了してください。 このチュートリアルでは、Azure AD B2C テナント構成を使用するようにカスタム ポリシー ファイルを更新する方法について説明します。
- Web アプリケーションを登録します。
Google アプリケーションを作成する
Azure Active Directory B2C (Azure AD B2C) で Google アカウントを持つユーザーのサインインを有効にするには、 Google Developers Console でアプリケーションを作成する必要があります。 詳細については、「OAuth 2.0 の設定」を参照してください。 Google アカウントをまだお持ちでない場合は、 https://accounts.google.com/signup
でサインアップできます。
- Google アカウントの資格情報を使用して Google デベロッパー コンソール にサインインします。
- ページの左上隅にあるプロジェクトの一覧を選択し、[新しいプロジェクト] を選択します。
- [プロジェクト名] を入力し、[作成] を選択します。
- 画面の左上にあるプロジェクト ドロップダウンを選択して、新しいプロジェクトを使用していることを確認します。 名前でプロジェクトを選択し、[ 開く] を選択します。
- 左側のメニューで、 API とサービス を選択し、 OAuth 同意画面を選択します。 [ 外部] を選択し、[ 作成] を選択します。
- アプリケーションの 名前 を入力します。
- ユーザー サポートメールを選択します。
- [ アプリ ドメイン ] セクションで、 アプリケーションのホーム ページへのリンク、 アプリケーションのプライバシー ポリシーへのリンク、アプリケーション のサービス利用規約へのリンクを入力します。
- [ 承認済みドメイン ] セクションで、「 b2clogin.com」と入力します。
- [ 開発者の連絡先情報 ] セクションに、プロジェクトの変更について通知する Google のメールアドレスをコンマで区切って入力します。
- 保存 を選択します。
- 左側のメニューで [資格情報] を選択し、[ 資格情報の作成>OAuth クライアント ID] を選択します。
-
[アプリケーションの種類] で [Web アプリケーション] を選択します。
- アプリケーションの 名前 を入力します。
-
[Authorized JavaScript origins]\(承認された JavaScript の配信元\) に「
https://your-tenant-name.b2clogin.com
」と入力します。 カスタム ドメインを使用する場合は、「https://your-___domain-name
」と入力します。 -
承認されたリダイレクト URI には、「
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp
」と入力します。 カスタム ドメインを使用する場合は、「https://your-___domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
」と入力します。your-___domain-name
をカスタム ドメインに置き換え、your-tenant-name
をテナントの名前に置き換えます。 テナントが Azure AD B2C で大文字で定義されている場合でも、テナント名を入力するときは、すべて小文字を使用します。 すべてのインスタンスで、your-tenant-name
をディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインがcontoso.onmicrosoft.com
の場合は、contoso
を使用します。 テナント名がない場合は、テナントの詳細を読み取る方法を確認してください。
- を選択してを作成します。
- [クライアント ID] と [クライアント シークレット] の値をコピーします。 テナントで ID プロバイダーとして Google を構成するには、両方が必要です。 [クライアント シークレット] は、重要なセキュリティ資格情報です。
GOOGLE を ID プロバイダーとして構成する
- 少なくとも外部 ID プロバイダー管理者特権を持つアカウントで Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択します。
- [ ID プロバイダー] を選択し、[ Google] を選択します。
- 名前を入力します。 たとえば、 Google などです。
- [クライアント ID] には、前に作成した Google アプリケーションのクライアント ID を入力します。
- クライアント シークレットの場合は、記録したクライアント シークレットを入力します。
- 保存 を選択します。
ユーザー フローに Google ID プロバイダーを追加する
この時点で、Google ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 Google ID プロバイダーをユーザー フローに追加するには、次のようにします。
- Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
- Google ID プロバイダーを追加するユーザー フローを選択します。
- [ソーシャル ID プロバイダー] で、[Google] を選択します。
- 保存 を選択します。
- ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
-
[アプリケーション] で、以前に登録した testapp1 という名前の Web アプリケーションを選択します。
応答 URL に
https://jwt.ms
が表示されます。 - [ ユーザー フローの実行 ] ボタンを選択します。
- サインアップまたはサインイン ページで、Google アカウントでサインインする Google を選択します。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされます。 このページには、Azure AD B2C が返すトークンの内容が表示されます。
ポリシー キーを作成する
以前に Azure AD B2C テナントに記録したクライアント シークレットを格納する必要があります。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択し、[追加] を選びます。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの名前を入力します。 たとえば、
GoogleSecret
のようにします。 プレフィックスB2C_1A_
がキーの名前に自動的に追加されます。 - [ シークレット] に、前に記録したクライアント シークレットを入力します。
- [ キーの使用法] で、[
Signature
] を選択します。 - を選択してを作成します。
GOOGLE を ID プロバイダーとして構成する
ユーザーが Google アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとしてアカウントを定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。
Google アカウントをクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProviders 要素に追加します。
TrustFrameworkExtensions.xml ファイルを開きます。
ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。
次のように新しい ClaimsProvider を追加します。
<ClaimsProvider> <Domain>google.com</Domain> <DisplayName>Google</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Google-OAuth2"> <DisplayName>Google</DisplayName> <Protocol Name="OAuth2" /> <Metadata> <Item Key="ProviderName">google</Item> <Item Key="authorization_endpoint">https://accounts.google.com/o/oauth2/auth</Item> <Item Key="AccessTokenEndpoint">https://accounts.google.com/o/oauth2/token</Item> <Item Key="ClaimsEndpoint">https://www.googleapis.com/oauth2/v1/userinfo</Item> <Item Key="scope">email profile</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="client_id">Your Google application ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_GoogleSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="google.com" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
client_idアプリケーション登録のアプリケーション ID に設定します。
ファイルを保存します。
ユーザー体験を追加する
この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。
- スターター パックから TrustFrameworkBase.xml ファイルを開きます。
-
を含む
Id="SignUpOrSignIn"
要素の内容全体を検索してコピーします。 - TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
- UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
- ユーザージャーニーの ID を変更します。 たとえば、
Id="CustomSignUpSignIn"
のようにします。
ID プロバイダーをユーザー体験に追加する
これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。
ユーザー体験に
Type="CombinedSignInAndSignUp"
またはType="ClaimsProviderSelection"
を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。次のオーケストレーション手順で、 ClaimsExchange 要素を追加します。 Id をターゲット要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、先ほど作成した技術プロファイルの ID に更新します。
次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション手順を示しています。
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAuth2" />
</ClaimsExchanges>
</OrchestrationStep>
依存先パーティーポリシーを構成する
証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 依存するパーティー内で DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。
次の例では、 CustomSignUpSignIn
ユーザー体験の ReferenceId が CustomSignUpSignIn
に設定されています。
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
カスタム ポリシーをアップロードする
- Azure portal にサインインします。
- ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
- Azure portal で、 [Azure AD B2C] を検索して選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー (
TrustFrameworkExtensions.xml
など)、証明書利用者ポリシー (SignUpSignIn.xml
など)。
カスタム ポリシーをテストする
- 関連パーティポリシー(例:
B2C_1A_signup_signin
)を選択してください。 - [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。
応答 URL に
https://jwt.ms
が表示されます。 - [ 今すぐ実行 ] ボタンを選択します。
- サインアップまたはサインイン ページで、Google アカウントでサインインする Google を選択します。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
次のステップ
- Google トークンをアプリケーションに渡す方法について説明します。
- Google フェデレーション ライブ デモと、Google アクセス トークン Live デモを渡す方法を確認する