使用 Azure Active Directory B2C 以 Apple ID 設定註冊和登入
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式。
- 完成開始使用 Active Directory B2C 中的自定義原則中的 步驟
- 註冊 Web 應用程式。
建立 Apple ID 應用程式
若要在 Azure Active Directory B2C (Azure AD B2C) 中啟用 Apple ID 的使用者登入,您必須在 中 https://developer.apple.com建立應用程式。 如需詳細資訊,請參閱 使用Apple登入。 如果您還沒有 Apple 開發人員帳戶,您可以在 Apple Developer Program 註冊。
- 使用您的帳戶認證登入 Apple Developer Portal 。
- 從功能表中,選取 [憑證]、[標識符]、&[配置檔],然後選取 [+]。
- 針對 [註冊新的標識符],選取 [應用程式標識符],然後選取 [繼續]。
- 針對 [ 選取類型],選取 [應用程式],然後選取 [ 繼續]。
- 註冊 應用程式識別碼:
- 輸入描述
- 輸入套件 組合識別碼,例如
com.contoso.azure-ad-b2c
。 - 針對 [功能],從功能清單中選取 [ 使用 Apple 登入]。
- 請記下此步驟 中的小組標識碼 (應用程式標識元前置詞)。 稍後您將需要此資訊。
- 選取 [Continue] \(繼續\),然後選取 [Register] \(註冊\)。
- 從功能表中,選取 [憑證]、[標識符]、&[配置檔],然後選取 [+]。
- 針對 [註冊新標識符],選取 [服務標識符],然後選取 [繼續]。
- 針對 註冊服務標識碼:
- 輸入描述。 同意畫面上的用戶會顯示描述。
- 輸入識別碼, 例如
com.consoto.azure-ad-b2c-service
。 記下您的 服務標識碼 標識碼。 標識碼是 OpenID 連線 流程的用戶端識別碼。 - 選取 [ 繼續],然後選取 [ 註冊]。
- 從 [標識符] 中,選取您建立的標識符。
- 選取 [ 使用 Apple 登入],然後選取 [ 設定]。
- 選取您想要設定使用 Apple 登入的主要應用程式識別碼。
- 在 [網域] 和 [子域] 中, 輸入
your-tenant-name.b2clogin.com
。 將your-tenant-name取代為您的租用戶名稱。 如果您使用 自訂網域,請輸入https://your-domain-name
。 - 在 [ 傳回 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 必須位於所有小寫中。 - 選取 [ 下一步],然後選取 [ 完成]。
- 當彈出視窗關閉時,請選取 [繼續],然後選取 [ 儲存]。
建立Apple客戶端密碼
- 從 Apple 開發人員入口網站選單中,選取 [金鑰],然後選取 [+]。
- 註冊 新金鑰:
- 輸入 金鑰名稱。
- 選取 [ 使用 Apple 登入],然後選取 [ 設定]。
- 針對 [ 主要應用程式識別符],選取您先前建立的應用程式,然後選取 [ 儲存]。
- 選取 [ 設定],然後選取 [ 註冊 ] 以完成密鑰註冊程式。 記下 金鑰識別碼。 當您設定使用者流程時,需要此金鑰。
- 針對 [ 下載金鑰],選取 [ 下載 ] 以下載包含金鑰的 .p8 檔案。
將Apple設定為識別提供者
- 以 Azure AD B2C 租使用者的全域管理員身分登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在 [Azure 服務] 底下,選取 [Azure AD B2C]。 或使用搜尋方塊來尋找並選取 [Azure AD B2C]。
- 選取 [ 識別提供者],然後選取 [ Apple]。
- 針對 [ 名稱],輸入 [使用 Apple 登入]。
- 輸入Apple開發人員識別碼(小組標識符)。
- 輸入Apple服務標識碼(用戶端標識碼)。
- 輸入步驟建立Apple客戶端密碼中的Apple金鑰標識碼。
- 選取並上傳 Apple憑證數據。
- 選取 [儲存]。
重要
- 使用 Apple 登入需要 管理員 每隔 6 個月更新其客戶端密碼。
- Apple 用戶端密碼會在到期時自動更新。 如果您需要手動更新密碼,請在 Azure 入口網站 中開啟 Azure AD B2C,移至 Apple 識別提供者>,然後選取 [更新密碼]。
- 遵循如何 提供 [使用 Apple 登入] 按鈕的指導方針。
將Apple識別提供者新增至使用者流程
若要讓使用者使用 Apple ID 登入,您必須將 Apple 身分識別提供者新增至使用者流程。 使用 Apple 登入只能針對 建議 的使用者流程版本進行設定。 若要將Apple識別提供者新增至使用者流程:
- 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程]。
- 選取您要新增Apple身分識別提供者的使用者流程。
- 在 [社交識別提供者] 底下,選取 [Apple]。
- 選取 [儲存]。
- 若要測試您的原則,請選取 [ 執行使用者流程]。
- 針對 [ 應用程式],選取您先前註冊的名為 testapp1 的Web應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 執行使用者流程 ] 按鈕。
- 從 [註冊或登入] 頁面中,選取 [Apple] 以使用 Apple ID 登入。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
簽署客戶端密碼
使用您先前下載的 .p8 檔案,將用戶端密碼簽署至 JWT 令牌。 有許多連結庫可以為您建立和簽署 JWT。 使用 Azure 函式,為您建立令牌。
建立 Azure 函式。
在 [開發人員] 底下,選取 [程序代碼 + 測試]。
複製 run.csx 檔案的內容,並將它貼到編輯器中。
選取 [儲存]。
提出 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 租用戶中記錄的客戶端密碼。
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在 [Azure 服務] 底下,選取 [Azure AD B2C]。 或使用搜尋方塊來尋找並選取 [Azure AD B2C]。
- 在 [概 觀] 頁面上,選取 [ 身分識別體驗架構]。
- 選取 [ 原則密鑰],然後選取 [ 新增]。
- 針對 [ 選項],選擇 [ 手動]。
- 輸入 原則金鑰的 [名稱 ]。 例如,“AppleSecret”。 前置詞 「B2C_1A_」 會自動新增至金鑰的名稱。
- 在 [ 秘密] 中,輸入 Azure 函式 (JWT 令牌) 傳回的令牌值。
- 針對 [ 金鑰使用方式],選取 [ 簽章]。
- 選取 [建立]。
重要
- 使用 Apple 登入需要 管理員 每隔 6 個月更新其客戶端密碼。
- 如果 Apple 用戶端密碼到期,並將新值儲存在原則金鑰中,您將需要手動更新。
- 建議您在 6 個月內設定自己的提醒,以產生新的客戶端密碼。
- 遵循如何 提供 [使用 Apple 登入] 按鈕的指導方針。
將Apple設定為識別提供者
若要讓使用者使用 Apple ID 登入,您必須將帳戶定義為 Azure AD B2C 可以透過端點進行通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者。
您可以將Apple ID定義為宣告提供者,方法是將它新增至 原則擴充檔案中的 ClaimsProviders 元素。
開啟 TrustFrameworkExtensions.xml。
尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。
新增 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>
將client_id設定為服務標識碼。 例如:
com.consoto.azure-ad-b2c-service
。儲存檔案。
新增使用者旅程圖
此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。
- 從入門套件開啟 TrustFrameworkBase.xml 檔案。
- 尋找並複製包含
Id="SignUpOrSignIn"
之 UserJourney 元素的整個內容。 - 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果專案不存在,請新增一個。
- 貼上您複製為 UserJourneys 元素子系之 UserJourney 元素的整個內容。
- 重新命名使用者旅程圖的標識碼。 例如:
Id="CustomSignUpSignIn"
。
將識別提供者新增至使用者旅程圖
現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作是您稍早建立的技術配置檔。
尋找在
Type="CombinedSignInAndSignUp"
使用者旅程圖中包含 或Type="ClaimsProviderSelection"
的協調流程步驟元素。 通常是第一個協調流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向用戶呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值設定為易記名稱。在下一個 協調流程步驟中,新增 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>
上傳自定義原則
- 登入 Azure 入口網站。
- 在入口網站工具列中選取 [ 目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [原則] 底下,選取 [身分識別體驗架構]。
- 選取 [ 上傳自定義原則],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如
TrustFrameworkExtensions.xml
,然後是信賴憑證者原則,例如SignUpSignIn.xml
。
測試您的自定義原則
- 選取您的信賴憑證者原則,例如
B2C_1A_signup_signin
。 - 針對 [ 應用程式],選取您 先前註冊的 Web 應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 立即 執行] 按鈕。
- 從 [註冊或登入] 頁面中,選取 [Apple] 以使用 Apple ID 登入。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
自訂您的使用者介面
遵循如何 提供使用Apple登入的指導方針。 Apple 提供數 個 [使用 Apple 登入] 按鈕,您可以用來讓使用者設定帳戶並登入。 如有必要,請建立自定義按鈕以提供使用Apple登入。 瞭解如何 顯示 [使用 Apple 登入] 按鈕。
若要符合 Apple 使用者介面指導方針: