如何使用 OpenSearch Dashboards 對 Amazon Cognito 身分驗證問題進行疑難排解?

上次更新日期:2022 年 12 月 16 日

我嘗試使用 Amazon OpenSearch Service 叢集上的 Amazon Cognito 身分驗證來存取 OpenSearch Dashboards。但是,我收到錯誤訊息或遇到登入問題。

解決方案

輸入 OpenSearch Dasboards URL 時,不會顯示登入頁面

您可能會因為以下幾個原因,從 OpenSearch Dashboards URL 重新導向至 Dashboards 儀表板:

注意:Amazon Cognito 身分驗證為非必要項目。若需要 Amazon Cognito 身分驗證,請變更您的網域存取政策。如需詳細資訊,請參閱設定存取政策

如果系統將您重新導向至 OpenSearch Dashboards 登入頁面,但無法登入,則表示 Amazon Cognito 設定錯誤。如果要解決此問題,請考慮以下方法:

「缺少角色」錯誤

如果您在 OpenSearch Service 網域中的 OpenSearch Dashboards 上開啟精細的存取控制 (FGAC),則可能會收到以下錯誤訊息:

"Missing Role
No roles available for this user, please contact your system administrator."

當您的 IAM 主要使用者或潛在使用者與擔任的 Amazon Cognito 角色不相符時,就會出現此錯誤。擔任的角色 (來自 Amazon Cognito 身分集區) 必須與您為主要使用者或潛在使用者指定的 IAM 角色相符。

若要讓主要或潛在使用者的 IAM 角色符合擔任的 Amazon Cognito 角色,請執行下列步驟:

1.    開啟 OpenSearch Service 主控台。

2.    從導覽窗格的受管理的叢集下,選擇網域

3.    選擇 Actions (動作)。

4.    選擇編輯安全組態

5.    在 Fine-grained access control (精細的存取控制) 下,選擇 Set IAM role (設定 IAM 角色) 為主要使用者或潛在使用者。確保指定 Amazon Cognito 身分驗證角色的 ARN。

6.    (選用) 如果您忘記主要或潛在使用者的 ARN (或角色的其他組態詳細資訊),請修改主要或潛在使用者。當您重新設定主要使用者或潛在使用者時,可以指定新的 IAM ARN。

7.    選擇 提交

無效的身分集區組態錯誤

使用 Amazon Cognito 成功驗證登入後,您可能仍會收到以下錯誤:

com.amazonaws.services.cognitoidentity.model.InvalidIdentityPoolConfigurationException:
Invalid identity pool configuration. Check assigned IAM roles for this pool.
(Service: AmazonCognitoIdentity; Status Code: 400; Error Code:
InvalidIdentityPoolConfigurationException; Request ID:
xxxxx-xxxx-xxxx-xxxx-xxxxx)

當 Amazon Cognito 不具有適當許可,能代表經過身分驗證的使用者擔任 IAM 角色時,就會出現此錯誤訊息。修改 IAM 角色的信任關係:

1.    開啟 Amazon IAM console (Amazon IAM 主控台)。

2.    選擇 Roles (角色)。

3.    選取您的 IAM 角色。

4.    選擇 Trust relationships (信任關係) 索引標籤。

5.    選擇 Edit trust relationship (編輯信任關係)。請確定您的 Amazon Cognito 身分集區可以擔任 IAM 角色。

例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "identity-pool-id"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

6.    選擇更新信任政策

如需有關更新已開啟精細的存取控制 (FGAC) 的 IAM 角色政策詳細資訊,請參閱教學課程:IAM 主要使用者和 Amazon Cognito

重新導向不相符錯誤

如果您嘗試使用儀表板 URL 或自訂端點 URL 存取 OpenSearch Service 中的 OpenSearch Dashboards,則可能會收到以下錯誤:

"An error was encountered with the requested page"

當您在 Amazon Cognito 的應用程式用戶端設定中缺少回呼 URL 組態時,就會出現此錯誤。

若要檢查您的應用程式用戶端設定是否已正確設定,請執行下列步驟:

1.    導覽至 Amazon Cognito 主控台

2.    選擇 Manage User Pools (管理使用者集區)。

3.    選取您要編輯的使用者集區。

4.    在主控台左側的應用程式整合下,選擇應用程式用戶端設定

5.    驗證 callback URL(s) (回呼 URL) 和 sign out URL(s) (登出 URL) 已正確設定。例如:

<dashboards-endpoint>/_dashboards/app/home

若為已開啟自訂端點的網域,您的回呼 URL登出 URL 將如下所示:

<domain-custom-endpoint>/_dashboards/app/home

Amazon Cognito 身分集區授權角色錯誤

如果您可以登入,但無法看到 OpenSearch Dashboards,便可能會收到以下錯誤訊息:

User: arn:aws:sts:: 123456789012:assumed-role/Cognito_identitypoolAuth_Role/CognitoIdentityCredentials is not authorized to perform: es:ESHttpGet

根據預設,身分集區中經過身分驗證的 IAM 角色不會包含存取儀表板所需的權限。您可以執行下列步驟,以尋找經身分驗證角色的名稱,並將其新增至 OpenSearch Service 存取政策:

1.    導覽至 Amazon Cognito 主控台

2.    選擇 Manage Identity Pools (管理身分集區)。

3.    在主控台右上角,選擇 Edit identity pool (編輯身分集區)。

4.    將經身分驗證的角色新增至您的 OpenSearch Service 網域存取政策。

注意:最佳實務是您針對經身分驗證的使用者使用以資源型政策。經身分驗證的角色專門控制儀表板的 Amazon Cognito 身分驗證。因此,請勿從網域存取政策中移除其他資源。


此文章是否有幫助?


您是否需要帳單或技術支援?