如何使用 OpenSearch Dashboards 對 Amazon Cognito 身分驗證問題進行疑難排解?
我嘗試使用 Amazon OpenSearch Service 叢集上的 Amazon Cognito 身分驗證來存取 OpenSearch Dashboards。但是,我收到錯誤訊息或遇到登入問題。
解決方案
輸入 OpenSearch Dasboards URL 時,登入頁面不會顯示
您可能會因為以下幾個原因,從 OpenSearch Dashboards URL 重新導向至 Dashboards 儀表板:
- 您已使用 IP 型網域存取政策,允許本機電腦的公有 IP 地址存取儀表板。請務必在網域存取政策中新增 Amazon Cognito 經過身分驗證的角色。如果您未新增已驗證的角色,則存取政策的行為就像一般政策一樣。
- 請求由許可的 AWS Identity 存取管理 (IAM) 使用者或角色簽署。當您存取儀表板 URL 時,請避免使用任何儀表板代理方法來簽署您的請求。
- 您的 OpenSearch Service 網域位於 Virtual Private Cloud (VPC) 中,而您的網域具有開放存取政策。在此情況下,所有 VPC 使用者都可存取儀表板和網域,而無需 Amazon Cognito 身分驗證。
**注意:**Amazon Cognito 身分驗證為非必要項目。若需要 Amazon Cognito 身分驗證,請變更您的網域存取政策。如需詳細資訊,請參閱設定存取政策。
如果系統將您重新導向至 OpenSearch Dashboards 登入頁面,但無法登入,則表示 Amazon Cognito 設定錯誤。如果要解決此問題,請考慮以下方法:
- 確認身分識別提供者已正確設定。
- 確認您的帳戶狀態已設定為「已確認」。您可以在 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 主控台。
2.從導覽窗格的 Managed clusters (受管理的叢集) 下,選擇 Domains (網域)。
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.在主控台左側的 App integration (應用程式整合) 下,從 App Client (應用程式用戶端) 選擇 OpenSearch 應用程式用戶端。
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 身分驗證。因此,請勿從網域存取政策中移除其他資源。
相關資訊
相關內容
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 8 個月前lg...