選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

將 OIDC 供應商設定為身分集區 IdP

焦點模式
將 OIDC 供應商設定為身分集區 IdP - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

篩選條件查看

OpenID Connect 是一種用來進行身分驗證的開放標準,許多登入供應商皆支援。使用 Amazon Cognito,您可以將身分與透過 設定的 OpenID Connect 提供者連結AWS Identity and Access Management

新增 OpenID Connect 供應商

如需有關如何建立 OpenID Connect 供應商的詳細資訊,請參閱《AWS Identity and Access Management 使用者指南》中的建立 OpenID Connect (OIDC) 身分提供者

將供應商與 Amazon Cognito 相關聯

若要新增 OIDC 身分提供者 (IdP)
  1. Amazon Cognito 主控台選擇 身分池。選取身分池。

  2. 選擇 使用者存取權 索引標籤。

  3. 選取 新增身分供應商

  4. 選擇 OpenID Connect (OIDC)

  5. 從您 AWS 帳戶中的 IAM IdP 選擇一個 OIDC 身分提供者。如果要新增新的 SAML 提供者,請選擇 建立新的提供者 以前往 IAM 主控台。

  6. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定

    1. 您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色

      1. 如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 ,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。

      2. 選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。

  7. 若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性

    1. 若不套用主要索引標籤,請選擇 非作用中

    2. 若要根據 subaud 宣告套用主要索引標籤,請選擇 使用預設對應

    3. 若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。

  8. 選取儲存變更

您可以將多個 OpenID Connect 供應商與單一身分集區相關聯。

使用 OpenID Connect

請參閱供應商的文件,了解如何登入和接收 ID 字符。

在您擁有權杖後,將該權杖新增至登入對映。使用供應商的 URI 作為金鑰。

驗證 OpenID Connect 權杖

第一次與 Amazon Cognito 整合時,您可能會收到 InvalidToken 例外狀況。請務必了解 Amazon Cognito 如何驗證 OpenID Connect (OIDC) 權杖。

注意

本文指出 (https://tools.ietf.org/html/rfc7523),Amazon Cognito 提供 5 分鐘的寬限期來處理系統間的所有時脈偏移。

  1. iss 參數必須符合登入對應所使用的金鑰 (例如 login.provider.com)。

  2. 這個簽章必須有效。簽章必須能夠透過 RSA 公開金鑰來驗證。

    注意

    身分集區會短暫維護 OIDC IdP 簽署金鑰的快取。如果您的提供者變更其簽署金鑰,Amazon Cognito 可能會傳回NoKeyFound錯誤,直到此快取重新整理為止。如果您遇到此錯誤,請等待約十分鐘讓身分集區重新整理簽署金鑰。

  3. 憑證公有金鑰的指紋符合您在建立 OIDC 供應商時在 IAM 中設定的指紋。

  4. 如果 azp 參數存在,請對照 OIDC 供應商中列出的用戶端 ID 來檢查這個值。

  5. 如果 azp 參數不存在,請對照 OIDC 供應商中列出的用戶端 ID 來檢查 aud 參數。

jwt.io 網站是很寶貴的資源,您可使用此資源將權杖解碼並驗證這些值。

Android

Map<String, String> logins = new HashMap<String, String>(); logins.put("login.provider.com", token); credentialsProvider.setLogins(logins);

iOS - Objective-C

credentialsProvider.logins = @{ "login.provider.com": token }

iOS - Swift

若要將 OIDC ID 權杖提供給 Amazon Cognito,請實作 AWSIdentityProviderManager 協定。

當實作 logins 方法時,請傳回包含您所設定 OIDC 供應商名稱的字典。這個字典可做為金鑰,並以來自已驗證使用者的現行 ID 權杖做為數值,如下列程式碼範例所示。

class OIDCProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { let completion = AWSTaskCompletionSource<NSString>() getToken(tokenCompletion: completion) return completion.task.continueOnSuccessWith { (task) -> AWSTask<NSDictionary>? in //login.provider.name is the name of the OIDC provider as setup in the Amazon Cognito console return AWSTask(result:["login.provider.name":task.result!]) } as! AWSTask<NSDictionary> } func getToken(tokenCompletion: AWSTaskCompletionSource<NSString>) -> Void { //get a valid oidc token from your server, or if you have one that hasn't expired cached, return it //TODO code to get token from your server //... //if error getting token, set error appropriately tokenCompletion.set(error:NSError(domain: "OIDC Login", code: -1 , userInfo: ["Unable to get OIDC token" : "Details about your error"])) //else tokenCompletion.set(result:"result from server id token") } }

當您將 AWSCognitoCredentialsProvider 執行個體化時,請傳遞在建構函式中將 AWSIdentityProviderManager 實作為 identityProviderManager 值的類別。如需詳細資訊,請前往 AWSCognitoCredentialsProvider 參考資料頁面,並選擇 initWithRegionType:identityPoolId:identityProviderManager

JavaScript

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'login.provider.com': token } });

Unity

credentials.AddLogin("login.provider.com", token);

Xamarin

credentials.AddLogin("login.provider.com", token);
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。