我想访问 OpenSearch Dashboards 并在我的 Amazon OpenSearch Service 域上使用 Amazon Cognito 身份验证。但是,我收到了错误或遇到了登录问题。
解决方法
当输入 OpenSearch Dashboards URL 时,登录页面未显示
登录页面可能由于以下原因而不显示:
- 您使用了基于 IP 的域访问策略,该策略允许本地计算机的 IP 地址访问 Dashboards。要解决此问题,请在域访问策略中添加经过 Amazon Cognito 身份验证的角色。
- 您使用了有权对请求进行签名的 AWS Identity and Access Management (IAM) 角色。要解决此问题,请勿使用代理方法对请求进行签名。
- 您的 OpenSearch Service 域位于虚拟私有云 (VPC) 中,因此该域具有开放访问策略。当域位于 VPC 中时,无需进行 Amazon Cognito 身份验证即可访问 Dashboards。
**注意:**如需要求进行 Amazon Cognito 身份验证,请更改您的域访问策略。
如果 Amazon Cognito 身份验证将您重定向到 OpenSearch Dashboards 登录页面,但您无法登录,则表明您对 Amazon Cognito 的配置不正确。要对此问题进行故障排除,请执行以下操作:
"Missing Role" 错误
如果您在 OpenSearch Service 域中的 OpenSearch Dashboards 上启用了精细访问控制,则可能会收到以下错误:
"Missing Role No roles available for this user, please contact your system administrator."
要解决此问题,请确保 Amazon Cognito 身份池代入的角色与指定主用户的 IAM 角色相匹配。
要将主用户的 IAM 角色与代入的 Amazon Cognito 角色相匹配,请完成以下步骤:
- 打开 OpenSearch Service 控制台。
- 在导航窗格的 Managed clusters(托管集群)下,选择 Domains(域)。
- 选择 Actions(操作)。
- 选择 Edit security configuration(编辑安全配置)。
- 在 Fine-grained access control(精细访问控制)下,选择 Set IAM role as the primary user(将 IAM 角色设置为主用户)。
- 对于 IAM ARN,输入 Amazon Cognito 身份池角色的 ARN。
- (可选)如果您不知道主用户的 ARN,请修改主用户以指定新的 IAM ARN。
- 选择 Submit(提交)。
身份池配置无效错误
如果 Amazon Cognito 无权为经过身份验证的用户代入 IAM 角色,则您可能会收到以下错误:
"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: #####-####-####-####-#####)"
要解决此问题,请修改 IAM 角色的信任关系。
完成以下步骤:
-
打开 Amazon IAM 控制台。
-
选择 Roles(角色)。
-
选择您的 IAM 角色。
-
选择 Trust relationships(信任关系)选项卡。
-
选择 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"
}
}
}
]
}
-
选择 Update trust policy(更新信任策略)。
有关详细信息,请参阅教程: 配置具有 IAM 主用户和 Amazon Cognito 身份验证的域。
当您请求页面时,您收到了错误
如果您在应用程序客户端设置中错误地配置了回调 URL 或自定义端点,则可能会收到以下错误:
"An error was encountered with the requested page"
要检查您是否正确配置了应用程序客户端设置,请完成以下步骤:
-
打开 Amazon Cognito 控制台。
-
选择 Manage user pools(管理用户池)。
-
选择要编辑的用户池。
-
在 App integration(应用程序集成)下,从 App client(应用程序客户端)菜单中选择 OpenSearch 应用程序客户端。
-
验证您是否正确配置了 callback URL(s)(回调 URL)和 sign out URL(s)(注销 URL)。
URL 示例:
<dashboards-endpoint>/_dashboards/app/home
具有已激活自定义端点的域的示例 URL:
<domain-custom-endpoint>/_dashboards/app/home
您收到 "CognitoIdentityCredentials is not authorized to perform" 错误
如果您已登录但看不到 OpenSearch Dashboards,则您可能会收到以下错误:
"User: arn:aws:sts:: 123456789012:assumed-role/Cognito_identitypoolAuth_Role/CognitoIdentityCredentials is not authorized to perform: es:ESHttpGet"
默认情况下,身份池中经过身份验证的 IAM 角色不包含访问 Dashboards 所需的权限。要查找经过身份验证的角色的名称并将其添加到 OpenSearch Service 访问策略中,请完成以下步骤:
- 打开 Amazon Cognito 控制台。
- 选择 Manage identity pools(管理身份池)。
- 选择 Edit identity pool(编辑身份池)。
- 将经过身份验证的角色添加到您的 OpenSearch Service 域访问策略中。
**注意:**最佳做法是对经过身份验证的用户使用基于资源的策略。经过身份验证的角色专门控制 OpenSearch Dashboards 的 Amazon Cognito 身份验证。
相关信息
常见配置问题