次の方法で共有


Azure Active Directory B2C を使用して Apple ID でサインアップとサインインを設定する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。

[前提条件]

Apple ID アプリケーションを作成する

Azure Active Directory B2C (Azure AD B2C) で Apple ID を持つユーザーのサインインを有効にするには、 https://developer.apple.comでアプリケーションを作成する必要があります。 詳細については、「 Apple でサインインする」を参照してください。 Apple 開発者アカウントをまだお持ちでない場合は、 Apple Developer Program にサインアップできます。

  1. アカウントの資格情報を使用して Apple 開発者ポータル にサインインします。
  2. メニューから、証明書、ID、& プロファイルを選択し、(+)を選択します。
  3. [ 新しい識別子の登録] で、[ アプリ ID] を選択し、[ 続行] を選択します。
  4. [ 種類の選択] で [ アプリ] を選択し、[ 続行] を選択します。
  5. [アプリ ID の登録] の場合:
    1. [Description](説明) を入力します。
    2. などのcom.contoso.azure-ad-b2c入力します。
    3. [機能] で、機能の一覧から [Apple でサインイン] を選択します。
    4. この手順で チーム ID (アプリ ID プレフィックス) を書き留めます。 この情報は後で必要になります。
    5. [続行][登録] の順に選択します。
  6. メニューから、証明書、ID、& プロファイルを選択し、(+)を選択します。
  7. [ 新しい識別子の登録] で、[ サービス ID] を選択し、[続行] を選択 します
  8. [サービス ID の登録] の場合:
    1. [Description]\(説明\) を入力します。 説明は、同意画面にユーザーに表示されます。
    2. など、com.consoto.azure-ad-b2c-serviceを入力します。 サービス ID 識別子を書き留めます。 識別子は、OpenID Connect フローの クライアント ID です。
    3. [続行] を選択し、次に [登録] を選択します。
  9. [識別子] から、作成した識別子を選択します。
  10. [Apple でサインイン] を選択し、[構成] を選択します。
    1. Apple でのサインインを構成する プライマリ アプリ ID を 選択します。
    2. [ドメインとサブドメイン] に「your-tenant-name.b2clogin.com」と入力します。 「your-tenant-name」をテナントの名前に置き換えます。 カスタム ドメインを使用する場合は、「https://your-domain-name」と入力します。
    3. [ 戻る 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をカスタム ドメインに置き換えます。 戻り値の URL はすべて小文字である必要があります。
    4. [次 ] を選択し、そして [完了 ] を選択します。
    5. ポップアップ ウィンドウが閉じたら、[続行] 選択し、[保存]選択します。

Apple クライアント シークレットの作成

  1. Apple 開発者ポータル のメニューで、[キー ] を選択し、[(+)を選択します。
  2. [新しいキーの登録] の場合:
    1. キー名を入力してください。
    2. [Apple でサインイン] を選択し、[構成] を選択します。
    3. [プライマリ アプリ ID] で、前に作成したアプリを選択し、[保存] を選択します
    4. [ 構成] を選択し、[ 登録 ] を選択してキーの登録プロセスを完了します。 キー IDをメモします。 このキーは、ユーザー フローを構成するときに必要です。
  3. [ キーのダウンロード] で、[ ダウンロード ] を選択して、キーを含む .p8 ファイルをダウンロードします。

Apple を ID プロバイダーとして構成する

  1. 少なくとも外部 ID プロバイダー管理者特権を持つアカウントで Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure サービスで、Azure AD B2C を選択します。 または、検索ボックスを使用して Azure AD B2C を検索して選択します。
  4. [ ID プロバイダー] を選択し、[ Apple] を選択します。
  5. [名前] に「Apple でサインインする」と入力します。
  6. Apple 開発者 ID (チーム ID) を入力します。
  7. Apple サービス ID (クライアント ID) を入力します。
  8. 「Apple クライアント シークレットの作成」の手順で Apple キー ID を入力します。
  9. Apple 証明書データを選択してアップロードします。
  10. 保存 を選択します。

重要

  • Apple でサインインするには、管理者が 6 か月ごとにクライアント シークレットを更新する必要があります。
  • Apple クライアント シークレットは、有効期限が切れると自動的に更新されます。 シークレットを手動で更新する必要がある場合は、Azure portal で Azure AD B2C を開き、 ID プロバイダー>Apple に移動して、[ シークレットの更新] を選択します。
  • Apple でサインイン ボタンを提供する方法については、ガイドラインに従ってください。

Apple ID プロバイダーをユーザー フローに追加する

ユーザーが Apple ID を使用してサインインできるようにするには、Apple ID プロバイダーをユーザー フローに追加する必要があります。 Apple でのサインインは、 推奨 されるバージョンのユーザー フローに対してのみ構成できます。 Apple ID プロバイダーをユーザー フローに追加するには:

  1. Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
  2. Apple ID プロバイダーを追加するユーザー フローを選択します。
  3. [ ソーシャル ID プロバイダー] で、[ Apple] を選択します。
  4. 保存 を選択します。
  5. ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
  6. [アプリケーション] で、以前に登録した testapp1 という名前の Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  7. [ ユーザー フローの実行 ] ボタンを選択します。
  8. サインアップまたはサインイン ページで、Apple を選択して Apple ID でサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

クライアント シークレットを署名する

以前にダウンロードした .p8 ファイルを使用して、クライアント シークレットを JWT に署名します。 JWT の作成と署名に使用できるライブラリは多数あります。 トークンを 作成する Azure 関数を 使用します。

  1. Azure 関数を作成します。

  2. [ 開発者] で、[ コード + テスト] を選択します。

  3. run.csx ファイルの内容をコピーし、エディターに貼り付けます。

  4. 保存 を選択します。

  5. HTTP POST 要求を行い、次の情報を指定します。

    • appleTeamId: あなたの Apple 開発者チーム ID
    • appleServiceId: Apple サービス ID (クライアント ID)
    • appleKeyId: JWT ヘッダーに格納されている 10 桁のキー ID (Apple で必要)
    • p8key: PEM 形式のキー。 これを取得するには、テキスト エディターで .p8 ファイルを開き、改行なしで -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- の間のすべてをコピーします。

次の json は、Azure 関数の呼び出しの例です。

{
    "appleTeamId": "ABC123DEFG",
    "appleServiceId": "com.yourcompany.app1",
    "appleKeyId": "URKEYID001",
    "p8key": "MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg+s07NiAcuGEu8rxsJBG7ttupF6FRe3bXdHxEipuyK82gCgYIKoZIzj0DAQehRANCAAQnR1W/KbbaihTQayXH3tuAXA8Aei7u7Ij5OdRy6clOgBeRBPy1miObKYVx3ki1msjjG2uGqRbrc1LvjLHINWRD"
}

Azure 関数は、応答で適切に書式設定され、署名されたクライアント シークレット JWT で応答します。次に例を示します。

{
    "token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb20ueW91cmNvbXBhbnkuYXBwMSIsIm5iZiI6MTU2MDI2OTY3NSwiZXhwIjoxNTYwMzU2MDc1LCJpc3MiOiJBQkMxMjNERUZHIiwiYXVkIjoiaHR0cHM6Ly9hcHBsZWlkLmFwcGxlLmNvbSJ9.Dt9qA9NmJ_mk6tOqbsuTmfBrQLFqc9BnSVKR6A-bf9TcTft2XmhWaVODr7Q9w1PP3QOYShFXAnNql5OdNebB4g"
}

ポリシー キーを作成する

以前に Azure AD B2C テナントに記録したクライアント シークレットを格納する必要があります。

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure サービスで、Azure AD B2C を選択します。 または、検索ボックスを使用して Azure AD B2C を検索して選択します。
  4. [概要] ページで、[Identity Experience Framework] を選択します。
  5. [ポリシー キー] を選択してから、[追加] を選択します。
  6. [オプション] では、[手動] を選びます。
  7. ポリシー キーの名前を入力します。 たとえば、"AppleSecret" などです。 プレフィックス "B2C_1A_" がキーの名前に自動的に追加されます。
  8. [シークレット] に、Azure 関数 (JWT) によって返されるトークンの値を入力します。
  9. [キー使用法] には [署名] を選択します。
  10. を選択してを作成します。

重要

  • Apple でサインインするには、管理者が 6 か月ごとにクライアント シークレットを更新する必要があります。
  • Apple クライアント シークレットの有効期限が切れた場合は、手動で更新し、新しい値をポリシー キーに格納する必要があります。
  • 新しいクライアント シークレットを生成するには、6 か月以内に独自のアラームを設定することをお勧めします。
  • Apple でサインイン ボタンを提供する方法については、ガイドラインに従ってください。

Apple を ID プロバイダーとして構成する

ユーザーが Apple ID を使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとしてアカウントを定義する必要があります。 エンドポイントは、特定のユーザーが認証されていることを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。

Apple ID をクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProviders 要素に追加します。

  1. TrustFrameworkExtensions.xmlを開きます。

  2. ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。

  3. 次のように新しい ClaimsProvider を追加します。

    <ClaimsProvider>
      <Domain>apple.com</Domain>
      <DisplayName>Apple</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Apple-OIDC">
          <DisplayName>Sign in with Apple</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="ProviderName">apple</Item>
            <Item Key="authorization_endpoint">https://appleid.apple.com/auth/authorize</Item>
            <Item Key="AccessTokenEndpoint">https://appleid.apple.com/auth/token</Item>
            <Item Key="JWKS">https://appleid.apple.com/auth/keys</Item>
            <Item Key="issuer">https://appleid.apple.com</Item>
            <Item Key="scope">name email openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="response_types">code</Item>
            <Item Key="external_user_identity_claim_id">sub</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="ReadBodyClaimsOnIdpRedirect">user.name.firstName user.name.lastName user.email</Item>
            <Item Key="client_id">You Apple ID</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_AppleSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="https://appleid.apple.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="user.name.firstName"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="user.name.lastName"/>
            <OutputClaim ClaimTypeReferenceId="email" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. client_idをサービス識別子に設定します。 たとえば、com.consoto.azure-ad-b2c-service のようにします。

  5. ファイルを保存します。

ユーザー体験を追加する

この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。

  1. スターター パックから TrustFrameworkBase.xml ファイルを開きます。
  2. を含む Id="SignUpOrSignIn" 要素の内容全体を検索してコピーします。
  3. TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
  4. UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
  5. ユーザージャーニーの ID を変更します。 たとえば、Id="CustomSignUpSignIn" のようにします。

ID プロバイダーをユーザー体験に追加する

これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。

  1. ユーザー体験に Type="CombinedSignInAndSignUp"または Type="ClaimsProviderSelection" を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。

  2. 次のオーケストレーション手順で、 ClaimsExchange 要素を追加します。 Id をターゲット要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、先ほど作成した技術プロファイルの ID に更新します。

次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション手順を示しています。

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="AppleExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AppleExchange" TechnicalProfileReferenceId="Apple-OIDC" />
  </ClaimsExchanges>
</OrchestrationStep>

依存先パーティーポリシーを構成する

証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 依存するパーティー内で DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。

次の例では、 CustomSignUpSignIn ユーザー体験の ReferenceIdCustomSignUpSignInに設定されています。

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

カスタム ポリシーをアップロードする

  1. Azure portal にサインインします。
  2. ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ ポリシー] で、[ Identity Experience Framework] を選択します。
  5. [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー ( TrustFrameworkExtensions.xmlなど)、証明書利用者ポリシー ( SignUpSignIn.xmlなど)。

カスタム ポリシーをテストする

  1. 関連パーティポリシー(例: B2C_1A_signup_signin)を選択してください。
  2. [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  3. [ 今すぐ実行 ] ボタンを選択します。
  4. サインアップまたはサインイン ページで、Apple を選択して Apple ID でサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

ユーザー インターフェイスをカスタマイズする

Apple でサインインを提供する方法については、ガイドラインに従ってください。 Apple には、ユーザー がアカウントを 設定してサインインできるようにするために使用できる Apple ボタンを使用したサインインがいくつか用意されています。 必要に応じて、Apple でのサインインを提供するカスタム ボタンを作成します。 Apple ボタンを使用して サインインを表示する方法について説明します。

Apple ユーザー インターフェイスのガイドラインに合わせるには、次の手順を実行します。