本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定使用 Apple 登入作為身分集區 IdP
Amazon Cognito 身分集區與 登入 Apple 搭配使用,為您的行動應用程式和 Web 應用程式使用者提供聯合身分驗證。本節說明如何使用「使用 Apple 登入」做為身分提供者 (IdP) 來註冊及設定您的應用程式。
若要以身分驗證供應商身分將「使用 Apple 登入」新增至身分集區,您必須完成兩個程序。首先,在應用程式整合「使用 Apple 登入」,然後在身分集區中設定「使用 Apple 登入」。如需設定使用 Apple 登入的詳細資訊 up-to-date,請參閱 Apple 開發人員文件中設定使用 Apple 登入的環境
設定 Sign in with Apple
若要將「使用 Apple 登入」設定為 IdP,請向 Apple 註冊您的應用程式,以接收用戶端 ID。
-
使用您的 Apple 憑證登入
。 -
在左側導覽窗格中,選擇憑證IDs和設定檔 。
-
在左側導覽窗格中,選擇 Identifiers (識別碼)。
-
在 Identifiers (識別碼) 頁面上,選擇 + 圖示。
-
在註冊新識別碼頁面上,選擇應用程式 IDs,然後選擇繼續 。
-
在 Register an App ID (註冊應用程式 ID) 頁面上,執行下列操作:
-
在 Description (說明) 下方,輸入說明內容。
-
在 Bundle ID (套件 ID) 下,輸入識別碼。記下此 Bundle ID (套件 ID),因為您需要此值才能將 Apple 設定為身分集區中的供應商。
-
在 Capabilities (功能) 下方,選擇 Sign In with Apple,然後選擇 Edit (編輯)。
-
在 使用 Apple 登入:應用程式 ID 組態 頁面上,針對您的應用程式選取適當設定。然後選擇 Save (儲存)。
-
選擇繼續。
-
-
在 Confirm your App ID (確認您的應用程式 ID) 頁面上,選擇 Register (註冊)。
-
如果您想要將 Sign in with Apple 與原生 iOS 應用程式整合,請繼續進行步驟 10。步驟 11 適用於您想要與 Sign in wih Apple JS 整合的應用程式。
-
在識別符頁面上,選擇應用程式IDs選單,然後選擇服務 IDs。選擇 + 圖示。
-
在註冊新識別碼頁面上,選擇服務 IDs,然後選擇繼續 。
-
在 Register a Services ID (註冊服務 ID) 頁面上,執行下列操作:
-
在 Description (說明) 下方,輸入說明內容。
-
在 Identifier (識別碼) 下方,輸入識別碼。記下服務 ID,因為您需要此數值才能將 Apple 設定為身分集區中的供應商。
-
選取 Sign In with Apple,然後選擇 Configure (設定)。
-
在 Web Authentication Configuration (Web 驗證組態) 頁面上,選擇 Primary App ID (主要應用程式 ID)。在網站 URLs下,選擇 + 圖示。在 Domains and Subdomains (網域和子網域) 中,輸入應用程式的網域名稱。在傳回 中URLs,輸入URL授權在使用者透過使用 Apple 登入進行身分驗證後重新引導使用者的回呼。
-
選擇 Next (下一步)。
-
選擇 Continue (繼續),然後選擇 Register (註冊)。
-
-
在左側導覽窗格中,選擇 Keys (金鑰)。
-
在 Keys (金鑰) 頁面上,選擇 + 圖示。
-
在 Register a New Key (註冊新的金鑰) 頁面上,執行下列操作:
-
在 Key Name (金鑰名稱) 底下,輸入金鑰名稱。
-
選擇 Sign In with Apple,然後選擇 Configure (設定)。
-
在 Configure Key (設定金鑰) 頁面上,選擇 Primary App ID (主要應用程式 ID),然後選擇 Save (儲存)。
-
選擇 Continue (繼續),然後選擇 Register (註冊)。
-
注意
若要將 Sign in with Apple 與原生 iOS 應用程式整合,請參閱使用 Sign in with Apple 實作使用者身分驗證。
若要在原生 iOS 以外的平台中整合 Sign in with Apple,請參閱 Sign in with Apple JS。
在 Amazon Cognito 聯合身分主控台中設定外部供應商
使用下列程序設定您的外部供應商。
若要新增「使用 Apple 登入」身分提供者 (IdP)
-
從 Amazon Cognito 主控台
選擇 身分池。選取身分池。 -
選擇 使用者存取權 索引標籤。
-
選取 新增身分供應商。
-
選擇 使用 Apple 登入。
-
輸入您使用 Apple Developer
建立之OAuth專案的服務 ID。如需詳細資訊,請參閱《使用 Apple 文檔登入》中的使用 Apple 驗證登入使用者 。 -
若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定。
-
您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色。
-
如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 值,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。
-
選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。
-
-
-
若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性。
-
若不套用主要索引標籤,請選擇 非作用中。
-
若要根據
sub
和aud
宣告套用主要索引標籤,請選擇 使用預設對應。 -
若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。
-
-
選取儲存變更。
在 Amazon Cognito 聯合身分CLI範例中,使用 Apple 作為提供者登入
此範例會建立名為 MyIdentityPool
的身分集區,並以「使用 Apple 登入」做為 IdP。
aws cognito-identity create-identity-pool --identity-pool-name MyIdentityPool
--supported-login-providers appleid.apple.com="sameple.apple.clientid"
如需詳細資訊,請參閱建立身分識別集區
產生 Amazon Cognito 身分 ID
此範例會產生 (或擷取) Amazon Cognito ID。這是公有的API,因此您不需要任何憑證來呼叫此 API。
aws cognito-identity get-id --identity-pool-id SampleIdentityPoolId --logins
appleid.apple.com="SignInWithAppleIdToken"
如需詳細資訊,請參閱這裡。
取得 Amazon Cognito 身分 ID 的憑證
此範例會傳回所提供的身分 ID 和 Sign in with Apple 登入的登入資料。這是公有的API,因此您不需要任何憑證來呼叫此 API。
aws cognito-identity get-credentials-for-identity --identity-id SampleIdentityId
--logins appleid.apple.com="SignInWithAppleIdToken"
如需詳細資訊,請參閱 get-credentials-for-identity
使用 Sign in with Apple:Android系統
Apple 不提供支援使用 Apple for Android 登入SDK的 。您可以改在 Web 檢視中使用 Web 流程。
-
若要在您的應用程式中設定 Sign in with Apple,請遵循 Apple 文件中的 Configuring Your Webpage for Sign In with Apple
。 -
若要將 Sign in with Apple 按鈕新增至您的 Android 使用者介面,請遵循 Apple 文件中的 Displaying and Configuring Sign In with Apple Buttons
。 -
若要使用「使用 Apple 登入」安全地對使用者進行身分驗證,請遵循 Apple 文件中的使用「使用 Apple 登入」對使用者進行身分驗證
。
Sign in with Apple 會使用工作階段物件來追蹤其狀態。Amazon Cognito 使用來自此工作階段物件的 ID 權杖來驗證使用者、產生唯一的識別符,並視需要授予使用者對其他 AWS 資源的存取權。
@Override public void onSuccess(Bundle response) { String token = response.getString("id_token"); Map<String, String> logins = new HashMap<String, String>(); logins.put("appleid.apple.com", token); credentialsProvider.setLogins(logins); }
使用 Sign in with Apple:iOS - Objective-C
Apple SDK支援在原生 iOS 應用程式中使用 Apple 登入。若要在原生 iOS 裝置中使用 Sign in with Apple 來實作使用者身分驗證,請遵循 Apple 文件中的 Implementing User Authentication with Sign in with Apple
Amazon Cognito 使用 ID 權杖來驗證使用者、產生唯一識別碼,並視需要授予使用者對其他 AWS 資源的存取權。
(void)finishedWithAuth: (ASAuthorizationAppleIDCredential *)auth error: (NSError *) error { NSString *idToken = [ASAuthorizationAppleIDCredential objectForKey:@"identityToken"]; credentialsProvider.logins = @{ "appleid.apple.com": idToken }; }
使用 Sign in with Apple:iOS - Swift
Apple SDK支援在原生 iOS 應用程式中使用 Apple 登入。若要在原生 iOS 裝置中使用 Sign in with Apple 來實作使用者身分驗證,請遵循 Apple 文件中的 Implementing User Authentication with Sign in with Apple
Amazon Cognito 使用 ID 權杖來驗證使用者、產生唯一識別碼,並視需要授予使用者對其他 AWS 資源的存取權。
如需如何在 iOS 中設定「使用 Apple 登入」的詳細資訊,請參閱設定「使用 Apple 登入」
func finishedWithAuth(auth: ASAuthorizationAppleIDCredential!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.identityToken, credentialsProvider.logins = ["appleid.apple.com": idToken!] } }
搭配 Apple 使用登入: JavaScript
Apple 不提供支援使用 Apple for 登入SDK的 JavaScript。您可以改在 Web 檢視中使用 Web 流程。
-
若要在您的應用程式中設定 Sign in with Apple,請遵循 Apple 文件中的 Configuring Your Webpage for Sign In with Apple
。 -
若要將使用 Apple 登入按鈕新增至 JavaScript 使用者介面,請遵循 Apple 文件中的顯示和設定使用 Apple 登入按鈕
。 -
若要透過「使用 Apple 登入」安全地驗證使用者,請遵循 Apple 文件中的 Configuring Your Web page for Sign In with Apple
。
Sign in with Apple 會使用工作階段物件來追蹤其狀態。Amazon Cognito 使用來自此工作階段物件的 ID 權杖來驗證使用者、產生唯一的識別符,並視需要授予使用者對其他 AWS 資源的存取權。
function signinCallback(authResult) { // Add the apple's id token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'appleid.apple.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); }
使用 Sign in with Apple:Xamarin
我們沒有支援使用 Apple for Xamarin 登入SDK的 。您可以改在 Web 檢視中使用 Web 流程。
-
若要在您的應用程式中設定 Sign in with Apple,請遵循 Apple 文件中的 Configuring Your Webpage for Sign In with Apple
。 -
若要將 Sign in with Apple 按鈕新增至您的 Xamarin 使用者介面,請遵循 Apple 文件中的 Displaying and Configuring Sign In with Apple Buttons
。 -
若要透過「使用 Apple 登入」安全地驗證使用者,請遵循 Apple 文件中的 Configuring Your Web page for Sign In with Apple
。
Sign in with Apple 會使用工作階段物件來追蹤其狀態。Amazon Cognito 使用來自此工作階段物件的 ID 權杖來驗證使用者、產生唯一的識別符,並視需要授予使用者對其他 AWS 資源的存取權。
取得權杖之後,您可以將其設定在您的 CognitoAWSCredentials
中:
credentials.AddLogin("appleid.apple.com", token);