跳至内容

如何对 OpenSearch Dashboards 中的 Amazon Cognito 身份验证问题进行故障排除?

2 分钟阅读
0

我想访问 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 角色相匹配,请完成以下步骤:

  1. 打开 OpenSearch Service 控制台
  2. 在导航窗格的 Managed clusters(托管集群)下,选择 Domains(域)。
  3. 选择 Actions(操作)。
  4. 选择 Edit security configuration(编辑安全配置)。
  5. Fine-grained access control(精细访问控制)下,选择 Set IAM role as the primary user(将 IAM 角色设置为主用户)。
  6. 对于 IAM ARN,输入 Amazon Cognito 身份池角色的 ARN。
  7. (可选)如果您不知道主用户的 ARN,请修改主用户以指定新的 IAM ARN。
  8. 选择 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 角色的信任关系。

完成以下步骤:

  1. 打开 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 身份验证的域

当您请求页面时,您收到了错误

如果您在应用程序客户端设置中错误地配置了回调 URL 或自定义端点,则可能会收到以下错误:

"An error was encountered with the requested page"

要检查您是否正确配置了应用程序客户端设置,请完成以下步骤:

  1. 打开 Amazon Cognito 控制台

  2. 选择 Manage user pools(管理用户池)。

  3. 选择要编辑的用户池。

  4. App integration(应用程序集成)下,从 App client(应用程序客户端)菜单中选择 OpenSearch 应用程序客户端。

  5. 验证您是否正确配置了 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 访问策略中,请完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 选择 Manage identity pools(管理身份池)。
  3. 选择 Edit identity pool(编辑身份池)。
  4. 将经过身份验证的角色添加到您的 OpenSearch Service 域访问策略中。

**注意:**最佳做法是对经过身份验证的用户使用基于资源的策略。经过身份验证的角色专门控制 OpenSearch Dashboards 的 Amazon Cognito 身份验证。

相关信息

常见配置问题

AWS 官方已更新 1 年前