Azure Active Directory B2C を使用して Weibo アカウントでのサインアップおよびサインインを設定する
"開始する前に"、[ポリシーの種類の選択] セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
注意
この機能はパブリック プレビュー段階にあります。
前提条件
- ユーザー フローを作成して、ユーザーがアプリケーションにサインアップおよびサインインできるようにします。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」にある手順を完了します。
- Web アプリケーションを登録します。
Weibo アプリケーションを作成する
Azure Active Directory B2C (Azure AD B2C) で Weibo アカウントを持つユーザーのサインインを有効にするには、Weibo 開発者ポータルでアプリケーションを作成する必要があります。 まだ Weibo アカウントを持っていない場合は、https://weibo.com でサインアップできます。
- Weibo アカウントの資格情報を使用してWeibo 開発者ポータルにサインインします。
- サインインしたら、右上隅にある表示名を選択します。
- ドロップダウンで [编辑开发者信息 (開発者情報の編集)] を選択します。
- 必要な情報を入力し、 [提交 (送信)] を選択します。
- 電子メールによる確認プロセスを完了します。
- ID の確認ページに移動します。
- 必要な情報を入力し、 [提交 (送信)] を選択します。
Weibo アプリケーションを登録する
- 新しい Weibo アプリの登録ページに移動します。
- 必要なアプリケーション情報を入力します。
- [创建 (作成)] を選択します。
- アプリ キーとアプリケーション シークレットの値をコピーします。 ID プロバイダーをテナントに追加するには、これらの両方が必要です。
- 必要な写真をアップロードし、必要な情報を入力します。
- [保存以上信息 (保存)] を選択します。
- [高级信息 (詳細情報)] を選択します。
- OAuth2.0 の [授权设置 (リダイレクト URL)] フィールドの横の [编辑 (編集)] を選択します。
- OAuth2.0 の [授权设置 (リダイレクト URL)] に、「
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-tenant-name
を実際のテナントの名前に、your-domain-name
を実際のカスタム ドメインに置き換えます。 - [提交 (送信)] を選択します。
Weibo を ID プロバイダーとして構成する
- Azure AD B2C テナントの全体管理者として Azure Portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選び、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure Portal の左上隅の [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
- [ID プロバイダー] を選択してから、 [Weibo (プレビュー)] を選択します。
- [名前] を入力します。 たとえば、「Weibo」とします。
- [クライアント ID] には、前に作成した Weibo アプリケーションのアプリ キーを入力します。
- [クライアント シークレット] には、記録したアプリ シークレットを入力します。
- [保存] を選択します。
ユーザー フローに Weibo ID プロバイダーを追加する
- Azure AD B2C テナントで、 [ユーザー フロー] を選択します。
- Weibo ID プロバイダーを追加するユーザー フローをクリックします。
- [ソーシャル ID プロバイダー] から、 [Weibo] を選択します。
- [保存] を選択します。
- ポリシーをテストするには、 [ユーザー フローを実行します] を選択します。
- [アプリケーション] には、以前に登録した testapp1 という名前の Web アプリケーションを選択します。 [応答 URL] に
https://jwt.ms
と表示されます。 - [ユーザー フローを実行します] ボタンを選択します。
- サインアップまたはサインイン ページで、 [Weibo] を選択して Weibo アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されたトークンの内容が表示されます。
ポリシー キーを作成する
Azure AD B2C テナントで前に記録したクライアント シークレットを格納する必要があります。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選び、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、 [Azure AD B2C] を検索して選択します。
- [概要] ページで、 [Identity Experience Framework] を選択します。
- [ポリシー キー] を選択し、 [追加] を選択します。
- オプションについては、
Manual
を選択します。 - ポリシー キーの名前を入力します。 たとえば、「
WeiboSecret
」のように入力します。 プレフィックスB2C_1A_
がキーの名前に自動的に追加されます。 - [シークレット] に、前に記録したクライアント シークレットを入力します。
- [キー使用法] として [
Signature
] を選択します。 - Create をクリックしてください。
Weibo を ID プロバイダーとして構成する
ユーザーが Weibo アカウントを使用してサインインできるようにするには、そのアカウントを Azure AD B2C がエンドポイント経由で通信できる相手のクレーム プロバイダーとして定義する必要があります。 エンドポイントは、特定のユーザーが認証されていることを確認するために Azure AD B2C で使う一連の要求を提供します。
Weibo アカウントをクレーム プロバイダーとして定義するには、そのアカウントをポリシーの拡張ファイル内の ClaimsProviders 要素に追加します。
TrustFrameworkExtensions.xml を開きます。
ClaimsProviders 要素を見つけます。 存在しない場合は、それをルート要素の下に追加します。
新しい ClaimsProvider を次のように追加します。
<ClaimsProvider> <Domain>weibo.com</Domain> <DisplayName>Weibo (Preview)</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Weibo-OAuth2"> <DisplayName>Weibo</DisplayName> <Protocol Name="OAuth2" /> <Metadata> <Item Key="ProviderName">weibo</Item> <Item Key="authorization_endpoint">https://api.weibo.com/oauth2/authorize</Item> <Item Key="AccessTokenEndpoint">https://api.weibo.com/oauth2/access_token</Item> <Item Key="ClaimsEndpoint">https://api.weibo.com/2/account/get_uid.json</Item> <Item Key="scope">email</Item> <Item Key="HttpBinding">POST</Item> <Item Key="external_user_identity_claim_id">uid</Item> <Item Key="client_id">Your Weibo application ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_WeiboSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="numericUserId" PartnerClaimType="uid" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="weibo.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="displayName" DefaultValue="Weibo User" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="UserId" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateIssuerUserId" /> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <ClaimsProvider>
client_id を、アプリケーションの登録で取得したアプリケーション ID に設定します。
ファイルを保存します。
要求変換の追加
GitHub の技術プロファイルを使用するには、CreateIssuerUserId 要求変換を ClaimsTransformations の一覧に追加する必要があります。 ファイルに ClaimsTransformations 要素が定義されていない場合、親 XML 要素を次のように追加します。 要求変換では、numericUserId という名前の新しい要求の種類が定義されている必要があります。
- BuildingBlocks 要素を検索します。 要素が存在しない場合は追加します。
- ClaimsSchema 要素を見つけます。 要素が存在しない場合は追加します。
- ClaimsSchema 要素に numericUserId 要求を追加します。
- ClaimsTransformations 要素を見つけます。 要素が存在しない場合は追加します。
- CreateIssuerUserId 要求変換を ClaimsTransformations 要素に追加します。
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="numericUserId">
<DisplayName>Numeric user Identifier</DisplayName>
<DataType>long</DataType>
</ClaimType>
</ClaimsSchema>
<ClaimsTransformations>
<ClaimsTransformation Id="CreateIssuerUserId" TransformationMethod="ConvertNumberToStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="numericUserId" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
</ClaimsTransformations>
</BuildingBlocks>
ユーザー体験を追加する
この時点では、ID プロバイダーはセットアップされていますが、サインイン ページではまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成してください。そうでない場合は、次の手順に進みます。
- スターター パックから TrustFrameworkBase.xml ファイルを開きます。
Id="SignUpOrSignIn"
を含む UserJourney 要素を見つけ、その内容全体をコピーします。- TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は追加します。
- コピーした UserJourney 要素の内容全体を UserJourneys 要素の子として貼り付けます。
- ユーザー体験の 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="WeiboExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="WeiboExchange" TechnicalProfileReferenceId="Weibo-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
と表示されます。 - [今すぐ実行] ボタンを選択します。
- サインアップまたはサインイン ページで、 [Weibo] を選択して Weibo アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されたトークンの内容が表示されます。