分享方式:


使用 Azure Active Directory B2C 以 Apple ID 設定註冊和登入

開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。

注意

在 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 Developer Portal
  2. 從功能表中,選取 [憑證]、[標識符]、&[配置檔],然後選取 [+]。
  3. 針對 [註冊新的標識符],選取 [應用程式標識符],然後選取 [繼續]。
  4. 針對 [ 選取類型],選取 [應用程式],然後選取 [ 繼續]。
  5. 註冊 應用程式識別碼
    1. 輸入描述
    2. 輸入套件 組合識別碼,例如 com.contoso.azure-ad-b2c
    3. 針對 [功能],從功能清單中選取 [ 使用 Apple 登入]。
    4. 請記下此步驟 中的小組標識碼 (應用程式標識元前置詞)。 稍後您將需要此資訊。
    5. 選取 [Continue] \(繼續\),然後選取 [Register] \(註冊\)
  6. 從功能表中,選取 [憑證]、[標識符]、&[配置檔],然後選取 [+]。
  7. 針對 [註冊新標識符],選取 [服務標識符],然後選取 [繼續]。
  8. 針對 註冊服務標識碼
    1. 輸入描述。 同意畫面上的用戶會顯示描述。
    2. 輸入識別碼, 例如 com.consoto.azure-ad-b2c-service。 記下您的 服務標識碼 標識碼。 標識碼是 OpenID 連線 流程的用戶端識別碼
    3. 選取 [ 繼續],然後選取 [ 註冊]。
  9. [標識符] 中,選取您建立的標識符。
  10. 選取 [ 使用 Apple 登入],然後選取 [ 設定]。
    1. 選取您想要設定使用 Apple 登入的主要應用程式識別碼
    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-domain-name您的自訂網域取代 your-tenant-name 。 傳回 URL 必須位於所有小寫中。
    4. 選取 [ 下一步],然後選取 [ 完成]。
    5. 當彈出視窗關閉時,請選取 [繼續],然後選取 [ 儲存]。

建立Apple客戶端密碼

  1. 從 Apple 開發人員入口網站選單中,選取 [金鑰],然後選取 [+]。
  2. 註冊 新金鑰
    1. 輸入 金鑰名稱
    2. 選取 [ 使用 Apple 登入],然後選取 [ 設定]。
    3. 針對 [ 主要應用程式識別符],選取您先前建立的應用程式,然後選取 [ 儲存]。
    4. 選取 [ 設定],然後選取 [ 註冊 ] 以完成密鑰註冊程式。 記下 金鑰識別碼。 當您設定使用者流程時,需要此金鑰。
  3. 針對 [ 下載金鑰],選取 [ 下載 ] 以下載包含金鑰的 .p8 檔案。

將Apple設定為識別提供者

  1. 以 Azure AD B2C 租使用者的全域管理員身分登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  3. 在 [Azure 服務] 底下,選取 [Azure AD B2C]。 或使用搜尋方塊來尋找並選取 [Azure AD B2C]。
  4. 選取 [ 識別提供者],然後選取 [ Apple]。
  5. 針對 [ 名稱],輸入 [使用 Apple 登入]。
  6. 輸入Apple開發人員識別碼(小組標識符)。
  7. 輸入Apple服務標識碼(用戶端標識碼)。
  8. 輸入步驟建立Apple客戶端密碼中的Apple金鑰標識碼
  9. 選取並上傳 Apple憑證數據
  10. 選取 [儲存]。

重要

  • 使用 Apple 登入需要 管理員 每隔 6 個月更新其客戶端密碼。
  • Apple 用戶端密碼會在到期時自動更新。 如果您需要手動更新密碼,請在 Azure 入口網站 中開啟 Azure AD B2C,移至 Apple 識別提供者>,然後選取 [更新密碼]。
  • 遵循如何 提供 [使用 Apple 登入] 按鈕的指導方針。

將Apple識別提供者新增至使用者流程

若要讓使用者使用 Apple ID 登入,您必須將 Apple 身分識別提供者新增至使用者流程。 使用 Apple 登入只能針對 建議 的使用者流程版本進行設定。 若要將Apple識別提供者新增至使用者流程:

  1. 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程]。
  2. 選取您要新增Apple身分識別提供者的使用者流程。
  3. 在 [社交識別提供者] 底下,選取 [Apple]。
  4. 選取 [儲存]。
  5. 若要測試您的原則,請選取 [ 執行使用者流程]。
  6. 針對 [ 應用程式],選取您先前註冊的名為 testapp1 的Web應用程式。 回覆 URL 應該會顯示 https://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開發人員小組標識碼
    • appleServiceId:Apple Service ID (用戶端識別符)
    • appleKeyId:儲存在 JWT 標頭中的 10 位數密鑰標識碼(Apple 所需)
    • p8key:P EM 格式索引鍵。 您可以在文字編輯器中開啟 .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 入口網站
  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  3. 在 [Azure 服務] 底下,選取 [Azure AD B2C]。 或使用搜尋方塊來尋找並選取 [Azure AD B2C]。
  4. 在 [概 觀] 頁面上,選取 [ 身分識別體驗架構]。
  5. 選取 [ 原則密鑰],然後選取 [ 新增]。
  6. 針對 [ 選項],選擇 [ 手動]。
  7. 輸入 原則金鑰的 [名稱 ]。 例如,“AppleSecret”。 前置詞 「B2C_1A_」 會自動新增至金鑰的名稱。
  8. 在 [ 秘密] 中,輸入 Azure 函式 (JWT 令牌) 傳回的令牌值。
  9. 針對 [ 金鑰使用方式],選取 [ 簽章]。
  10. 選取 [建立]。

重要

  • 使用 Apple 登入需要 管理員 每隔 6 個月更新其客戶端密碼。
  • 如果 Apple 用戶端密碼到期,並將新值儲存在原則金鑰中,您將需要手動更新。
  • 建議您在 6 個月內設定自己的提醒,以產生新的客戶端密碼。
  • 遵循如何 提供 [使用 Apple 登入] 按鈕的指導方針。

將Apple設定為識別提供者

若要讓使用者使用 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. 儲存檔案。

新增使用者旅程圖

此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。

  1. 從入門套件開啟 TrustFrameworkBase.xml 檔案。
  2. 尋找並複製包含 Id="SignUpOrSignIn"之 UserJourney 元素的整個內容
  3. 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果專案不存在,請新增一個。
  4. 貼上您複製為 UserJourneys 元素子系之 UserJourney 元素整個內容。
  5. 重新命名使用者旅程圖的標識碼。 例如: Id="CustomSignUpSignIn"

將識別提供者新增至使用者旅程圖

現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作是您稍早建立的技術配置檔。

  1. 尋找在 Type="CombinedSignInAndSignUp"使用者旅程圖中包含 或 Type="ClaimsProviderSelection" 的協調流程步驟元素。 通常是第一個協調流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向用戶呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值設定為易記名稱。

  2. 在下一個 協調流程步驟中,新增 ClaimsExchange 元素。 將標識符設定為目標宣告交換標識碼的值。將TechnicalProfileReferenceId的值更新為您稍早建立之技術配置檔的標識碼。

下列 XML 示範使用者旅程圖的前兩個協調流程步驟與識別提供者:

<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元素。 更新 ReferenceId 以符合您新增識別提供者的使用者旅程圖標識碼。

在下列範例中 CustomSignUpSignIn ,針對使用者旅程圖, ReferenceId 會設定為 CustomSignUpSignIn

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

上傳自定義原則

  1. 登入 Azure 入口網站
  2. 在入口網站工具列中選取 [ 目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
  3. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]
  4. 在 [原則] 底下,選取 [身分識別體驗架構]。
  5. 選取 [ 上傳自定義原則],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如 TrustFrameworkExtensions.xml,然後是信賴憑證者原則,例如 SignUpSignIn.xml

測試您的自定義原則

  1. 選取您的信賴憑證者原則,例如 B2C_1A_signup_signin
  2. 針對 [ 應用程式],選取您 先前註冊的 Web 應用程式。 回覆 URL 應該會顯示 https://jwt.ms
  3. 選取 [ 立即 執行] 按鈕。
  4. 從 [註冊或登入] 頁面中,選取 [Apple] 以使用 Apple ID 登入。

如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms,以顯示 Azure AD B2C 所傳回令牌的內容。

自訂您的使用者介面

遵循如何 提供使用Apple登入的指導方針。 Apple 提供數 個 [使用 Apple 登入] 按鈕,您可以用來讓使用者設定帳戶並登入。 如有必要,請建立自定義按鈕以提供使用Apple登入。 瞭解如何 顯示 [使用 Apple 登入] 按鈕

若要符合 Apple 使用者介面指導方針: