跳至內容

如何對 OpenSearch Dashboards 中的 Amazon Cognito 驗證問題進行疑難排解?

2 分的閱讀內容
0

我想存取 OpenSearch Dashboards,並在我的 Amazon OpenSearch Service 網域上使用 Amazon Cognito 驗證。但是,我收到錯誤或遇到登入問題。

解決方法

輸入 OpenSearch Dashboards 網址後未出現登入頁面

以下原因可能導致登入頁面未顯示:

  • 您使用了 IP 型網域存取政策,該政策允許本機電腦的 IP 位址存取 Dashboards。若要解決此問題,請在網域存取政策中新增 Amazon Cognito 已驗證角色
  • 您使用了具有簽署請求權限的 AWS Identity and Access Management (IAM) 角色。若要解決此問題,請不要使用 Proxy 方法來簽署您的請求。
  • 您的 OpenSearch Service 網域位於虛擬私有雲端 (VPC) 中,因此該網域具有開放存取政策。當您的網域位於 VPC 中時,您不需要 Amazon Cognito 驗證即可存取 Dashboards。
    **注意:**若要要求 Amazon Cognito 驗證,請變更您的網域存取政策

如果 Amazon Cognito 驗證將您重新導向至 OpenSearch Dashboards 登入頁面,但您無法登入,則表示您的 Amazon Cognito 設定錯誤。若要對此問題進行疑難排解,請執行下列動作:

「缺少角色」錯誤

如果您在 OpenSearch Service 網域的 OpenSearch Dashboards 上啟用了精細的存取控制,那麼您可能會收到下列錯誤訊息:

「缺少角色,此使用者沒有可用的角色,請聯絡您的系統管理員。」

若要解決此問題,請確保 Amazon Cognito 身分池所承擔的角色與指定主要使用者的 IAM 角色相符。

若要將主要使用者的 IAM 角色與假設的 Amazon Cognito 角色匹配,請完成以下步驟:

  1. 開啟 OpenSearch Service console (OpenSearch Service 主控台)。
  2. 在導覽窗格的 Managed clusters (受管叢集) 下,請選擇 Domains (網域)。
  3. 選擇 Actions (動作)。
  4. 選擇 Edit security configuration (編輯安全性組態)。
  5. Fine-grained access control (精細存取控制) 下,選擇 Set IAM role (設定 IAM 角色) 作為主要使用者。
  6. IAM ARN 中,輸入 Amazon Cognito 身分池角色的 ARN。
  7. (選用) 如果您不知道主要使用者的 ARN,請修改主要使用者以指定新的 IAM ARN。
  8. 選擇 Submit (提交)。

無效的身分池組態錯誤

如果 Amazon Cognito 無權為已驗證使用者承擔 IAM 角色,那麼您可能會收到以下錯誤訊息:

「com.amazonaws.services.cognitoidentity.model.InvalidIdentityPoolConfigurationException: 身分池組態無效。查看此集區指派的 IAM 角色。(服務: AmazonCognitoIdentity;狀態代碼: 400;錯誤代碼: InvalidIdentityPoolConfigurationException;請求 ID: #####-####-####-####-#####)」

若要解決此問題,請修改 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 (更新信任政策)。

如需詳細資訊,請參閱教學課程: 使用 IAM 主要使用者和 Amazon Cognito 驗證設定網域

請求頁面時收到錯誤

如果您在應用程式用戶端設定中設定了錯誤的回呼網址或自訂端點,那麼您可能會收到下列錯誤訊息:

「請求頁面發生錯誤」

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

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

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

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

  4. App integration (應用程式整合)下,從 App client (應用程式用戶端) 功能表中選取 OpenSearch 應用程式用戶端。

  5. 確認您是否已正確設定回呼網址登出網址

    範例網址:

    <dashboards-endpoint>/_dashboards/app/home

    已啟用自訂端點之網域的範例網址:

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

您收到「CognitoIdentityCredentials 無權執行」錯誤

如果您登入但看不到 OpenSearch Dashboards,那麼您可能會收到以下錯誤訊息:

「User: arn:aws:sts:: 123456789012:assumed-role/Cognito_identitypoolAuth_Role/CognitoIdentityCredentials 無權執行:es:ESHttpGet」

預設情況下,身分池的已驗證 IAM 角色不包含存取 Dashboards 所需的權限。若要尋找已驗證角色的名稱,並將其新增至 OpenSearch Service 存取政策,請完成下列步驟:

  1. 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
  2. 選擇 Manage identity pools (管理身分池)。
  3. 選擇 Edit identity pool (編輯身分池)。
  4. 將您的已驗證角色新增至 OpenSearch Service 網域存取政策。

**注意:**對於已驗證的使用者,最佳做法是使用資源型政策。已驗證的角色專門用於控制 OpenSearch Dashboards 的 Amazon Cognito 驗證。

相關資訊

常見的組態問題

AWS 官方已更新 9 個月前