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

上次更新日期:2021 年 10 月 20 日

我正在使用 Amazon OpenSearch Service (Amazon Elasticsearch Service 的繼任者) 叢集上的 Amazon Cognito 身分驗證來嘗試存取 OpenSearch Dashboards。但是,我收到錯誤訊息或遭遇登入問題。為什麼會發生此情況?

解決方案

我已輸入 OpenSearch Dashboards URL,但無法看到登入頁面

注意:OpenSearch Dashboards 是 Kibana 的繼任者。

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

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

我被重新引導至 OpenSearch Dashboards 登入頁面,但無法登入

如果您被重新引導至 OpenSearch Dashboards 登入頁面,但無法登入,則說明 Amazon Cognito 設定錯誤。如果要解決此問題,請考慮以下方法:

「Missing Role」(缺少角色) 錯誤

如果您在 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 主控台 (OpenSearch Services console)。

2.    選擇您的 OpenSearch Service 網域。

3.    選擇 Actions (動作)。

4.    選擇 Modify authentication (修改身分驗證)。

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.    選擇 Update Trust Policy (更新信任政策)。

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

重新引導不相符錯誤

當您嘗試使用 Dashboards URL 或自訂端點 URL 存取 OpenSearch Service 上的 OpenSearch Dashboards 時,可能會收到以下錯誤:

"An error was encountered with the requested page"

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

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

1.    導覽至 Amazon Cognito console (Amazon Cognito 主控台)。

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

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

4.    在主控台左側,選擇 App client settings (應用程式用戶端設定)。

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 console (Amazon Cognito 主控台)。

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

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

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

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


此文章是否有幫助?


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