

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 仪表板的 SAML 身份验证 OpenSearch
<a name="saml"></a>

 OpenSearch 控制面板的 SAML 身份验证允许您使用现有的身份提供商为运行 OpenSearch 或 Elasticsearch 6.7 或更高版本的亚马逊 OpenSearch 服务域上的控制面板提供单点登录 (SSO)。要使用 SAML 身份验证，必须启用[访问权限的精细控制](fgac.md)。

控制面板的 S [AM](cognito-auth.md) L 身份验证允许您使用第三方身份 OpenSearch 提供商登录控制面板、管理精细访问控制、搜索数据和构建可视化效果，而不是通过 Amazon Cognito 或[内部用户](fgac.md#fgac-dashboards)数据库进行身份验证。 OpenSearch 服务支持使用 SAML 2.0 标准的提供商，例如 Okta、Keycloak、Active Directory 联合身份验证服务 (ADFS)、Auth0 和。 AWS IAM Identity Center

仪表板的 SAML 身份验证仅适用于通过 Web 浏览器访问 OpenSearch 仪表板。您的 SAML 凭据*不*允许您直接向 OpenSearch 或控制面板 APIs发出 HTTP 请求。

## SAML 配置概述
<a name="saml-overview"></a>

本文档假定您有现有的身份提供程序并且熟悉它。我们无法为您的确切提供商提供详细的配置步骤，只能为您的 OpenSearch 服务域提供详细的配置步骤。

 OpenSearch 仪表板登录流程可以采用以下两种形式之一：
+ **已启动服务提供程序 (SP)**：导航到控制面板（例如 `https://my-domain.us-east-1.es.amazonaws.com/_dashboards`），它会将您重定向到登录屏幕。登录后，身份提供程序会将您重定向到控制面板。
+ **身份提供者 (IdP) 已启动**：您导航到您的身份提供商，登录，然后从应用程序目录中选择 Dash OpenSearch boards。

OpenSearch 服务提供两种单点登录 URLs，SP 启动和 IDP 启动，但您只需要与所需控制面板登录流程相匹配的单点登录。 OpenSearch 

无论使用哪种身份验证类型，目标都是通过身份提供程序登录并接收包含您的用户名（必需）和任何[后端角色](fgac.md#fgac-concepts)（可选，但推荐执行）。此信息允许[访问权限的精细控制](fgac.md)向 SAML 用户分配权限。在外部身份提供程序中，后端角色通常称为“角色”或“组”。

## 注意事项
<a name="saml-considerations"></a>

在配置 SAML 身份验证时，请考虑以下事项：
+ 由于 IdP 元数据文件的大小，我们强烈建议使用 AWS 控制台配置 SAML 身份验证。
+ 域一次只支持一种控制面板身份验证方法。如果您启用了[ OpenSearch 控制面板的 Amazon Cognito 身份验证](cognito-auth.md)，则必须先将其禁用，然后才能启用 SAML 身份验证。
+ 如果将网络负载均衡器与 SAML 一起使用，则必须先创建自定义端点。有关更多信息，请参阅 [为亚马逊 OpenSearch 服务创建自定义终端节点](customendpoint.md)。
+ 对于非 IAM 身份（例如 Amazon S OpenSearch erverless 和 SAML 中的 SAML 以及亚马逊服务的基本内部用户授权），服务控制策略 (SCP) 将不适用或不进行评估。 OpenSearch 

## 用于 VPC 域的 SAML 身份验证
<a name="saml-vpc"></a>

SAML 不要求身份提供程序和服务提供程序之间直接进行通信。因此，即使您的 OpenSearch 域托管在私有 VPC 中，只要您的浏览器可以与 OpenSearch 集群和身份提供商通信，您仍然可以使用 SAML。您的浏览器基本上充当身份提供商和服务提供商之间的中间人。有关解释 SAML 身份验证流程的有用图表，请参阅 [Okta 文档](https://developer.okta.com/docs/concepts/saml/#planning-for-saml)。

## 修改域访问策略
<a name="saml-domain-access"></a>

在配置 SAML 身份验证之前，必须更新域访问策略，以允许 SAML 用户访问该域。否则，会显示拒绝访问的错误。

我们建议使用以下[域访问策略](ac.md#ac-types-resource)，它将提供针对域上子资源 (`/*`) 的完全访问权限：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:ESHttp*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
    }
  ]
}
```

------

要使策略的限制更为严格，可以在策略中添加 IP 地址条件。此条件将仅允许访问指定的 IP 地址范围或子网。例如，以下策略仅允许从 192.0.2.0/24 子网进行访问：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.0.2.0/24"
          ]
        }
      },
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*"
    }
  ]
}
```

------

**注意**  
开放域访问策略要求在域上启用精细访问控制，否则您会看到以下错误：  
`To protect domains with public access, a restrictive policy or fine-grained access control is required.`  
如果您的主用户或内部用户配置了强健密码，则从安全角度来看，在使用精细访问控制的同时保持策略开放也许是可以接受的。有关更多信息，请参阅 [Amazon 服务中的精细访问控制 OpenSearch](fgac.md)。

## 配置 SP 或 IdP 发起的身份验证
<a name="saml-enable-sp-or-idp"></a>

这些步骤说明了如何通过 SP 启动*或* IDP 启动的身份验证为仪表板启用 SAML 身份验证。 OpenSearch 有关同时启用这两种身份验证所需的额外步骤，请参阅[配置 SP 和 IdP 发起的身份验证](#saml-idp-with-sp)。

### 步骤 1：启用 SAML 身份验证
<a name="saml-enable"></a>

您可以在域创建期间启用 SAML 身份验证，也可以在现有域上选择 **Actions**（操作），**Edit security configuration**（编辑安全配置）。根据您的选择，以下步骤略有不同。

**在域配置中，在 “** OpenSearch 仪表板/Kibana 的 SAML 身份验证” 下，选择 “启用 SAML 身份验证”。****

### 步骤 2：配置身份提供程序
<a name="saml-configure-idp"></a>

根据配置 SAML 身份验证的时间，执行以下步骤。

#### 如果正在创建新域
<a name="saml-configure-new"></a>

如果您正在创建新域，则服务尚无法生成 OpenSearch 服务提供商实体 ID 或 SSO URLs。身份提供程序需要这些值才能正确启用 SAML 身份验证，但它们只能在创建域后生成。要在域创建期间解决这种相互依赖关系，您可以在 IdP 配置中提供临时值以生成所需的元数据，然后在域处于活动状态后对其进行更新。

如果您使用的是[自定义终端节点](customendpoint.md)，则可以推断出 URLs 将是什么。例如，如果您的自定义端点是 `www.custom-endpoint.com`，则服务提供程序实体 ID 将是 `www.custom-endpoint.com`，IdP 发起的 SSO URL 将是 `www.custom-endpoint.com/_dashboards/_opendistro/_security/saml/acs/idpinitiated`，SP 发起的 SSO URL 将是 `www.custom-endpoint.com/_dashboards/_opendistro/_security/saml/acs`。在创建域之前，您可以使用这些值来配置身份提供程序。有关示例，请参阅下一节。

**注意**  
您不能使用双栈端点登录，因为 HTTP 请求的 FQDN 与 SAML 请求的 FQDN 不同。如果您想使用双堆栈终端节点登录，则 OpenSearch管理员需要设置自定义终端节点并将别名记录值设置为双堆栈端点。

如果您没有使用自定义端点，则可以在 IdP 中输入*临时*值以生成所需的元数据，然后在域处于活动状态后对其进行更新。

例如，在 Okta 中，您可以在 **Single sign on URL**（单一登录 URL）和 **Audience URI (SP Entity ID)**（受众 URI（SP 实体 ID））字段输入 `https://temp-endpoint.amazonaws.com`，以生成元数据。然后，在域名处于活动状态后，您可以从 S OpenSearch ervice 中检索正确的值并在 Okta 中对其进行更新。有关说明，请参阅[第 6 步：更新你的 IdP URLs](#saml-update-urls)。

#### 如果您正在编辑现有域
<a name="saml-configure-existing"></a>

如果您要在现有域上启用 SAML 身份验证，请复制服务提供商实体 ID 和其中一个 SSO URLs。有关使用哪个 URL 的指南，请参阅 [SAML 配置概述](#saml-overview)。

![\[Service provider entity ID and SSO URLs for SAML authentication configuration.\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/images/SAML.png)


使用这些值配置您的身份提供程序。这是过程中最复杂的部分，不幸的是，术语和步骤因提供程序而异。请参阅提供程序的文档。

例如，在 Okta 中，您创建一个 SAML 2.0 Web 应用程序。为 **Single sign on URL**（单一登录 URL）指定 SSO URL。对于**受众 URI（SP 实体 ID）**中，指定 SP 实体 ID。

Okta 拥有用户和组，而不是用户和后端角色。对于**组属性语句**，建议将 `role` 添加到**名称**字段，并将正则表达式 `.+` 添加到**筛选条件**字段。此语句告诉 Okta 身份提供程序在用户进行身份验证包含 SAML 断言的字段 `role` 下面的所有用户组。

在 IAM Identity Center 中，您可以将 SP 实体 ID 指定为**应用程序 SAML 受众**。您还需要指定以下[属性映射](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html)：`Subject=${user:subject}:format=unspecified` 和 `Role=${user:groups}:format=uri`。

在 Auth0 中，创建常规 Web 应用程序，然后启用 SAML 2.0 加载项。在 Keycloak 中，创建客户端。

### 步骤 3：导入 IdP 元数据
<a name="saml-import-metadata"></a>

配置了身份提供程序后，它会生成 IdP 元数据文件。此 XML 文件包含有关提供者的信息，如 TLS 证书、单点登录端点和身份提供者的实体 ID。

复制 IdP 元数据文件的内容并将其粘贴到服务控制台的 “来自 **IdP 的元数据**” 字段中。 OpenSearch 也可以选择**从 XML 文件导入**并上载文件。元数据文件应如下所示：

```
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor entityID="entity-id" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
  <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>tls-certificate</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url"/>
  </md:IDPSSODescriptor>
</md:EntityDescriptor>
```

### 步骤 4：配置 SAML 字段
<a name="saml-configure-fields"></a>

输入 IdP 元数据后，请在 OpenSearch 服务控制台中配置以下其他字段：
+ **IdP entity ID**（IdP 实体 ID）：从元数据文件中复制 `entityID` 属性值粘贴到此字段。许多身份提供程序还将此值显示为配置后摘要的一部分。有些提供程序称之为 “发行人”。
+ **SAML 主用户名**和 **SAML 主后 and/or 端角色**-您指定的用户后端角色获得集群的完全权限，相当于[新的主用户](fgac.md#fgac-more-masters)，但只能在控制面板中 OpenSearch 使用这些权限。

  例如，在 Okta 中，您可能有属于群组 `admins` 的用户 `jdoe`。如果将 `jdoe` 添加到 **SAML 主用户名**字段中，只有该用户才会获得完全权限。如果将 `admins` 添加到 SAML 主后端角色字段中，任何属于 `admins` 组的用户将获得完全权限。
**注意**  
SAML 断言的内容必须与用于 SAML 主用户名和 SAML 主角色的字符串完全匹配。一些身份提供商在其用户名前添加前缀，这可能会导致 hard-to-diagnose不匹配。在身份提供程序用户界面中，您可能会看到 `jdoe`，但 SAML 断言可能包含 `auth0|jdoe`。始终使用 SAML 断言中的字符串。

许多身份提供程序让您可以在配置过程中查看示例断言，以及 [SAML 跟踪](https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/)可以帮助您检查和排除真实断言的内容。断言如下所示：

```
<?xml version="1.0" encoding="UTF-8"?>
<saml2:Assertion ID="id67229299299259351343340162" IssueInstant="2020-09-22T22:03:08.633Z" Version="2.0"
  xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
  <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">idp-issuer</saml2:Issuer>
  <saml2:Subject>
    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">username</saml2:NameID>
    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
      <saml2:SubjectConfirmationData NotOnOrAfter="2020-09-22T22:08:08.816Z" Recipient="domain-endpoint/_dashboards/_opendistro/_security/saml/acs"/>
    </saml2:SubjectConfirmation>
  </saml2:Subject>
  <saml2:Conditions NotBefore="2020-09-22T21:58:08.816Z" NotOnOrAfter="2020-09-22T22:08:08.816Z">
    <saml2:AudienceRestriction>
      <saml2:Audience>domain-endpoint</saml2:Audience>
    </saml2:AudienceRestriction>
  </saml2:Conditions>
  <saml2:AuthnStatement AuthnInstant="2020-09-22T19:54:37.274Z">
    <saml2:AuthnContext>
      <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
    </saml2:AuthnContext>
  </saml2:AuthnStatement>
  <saml2:AttributeStatement>
    <saml2:Attribute Name="role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">GroupName Match Matches regex ".+" (case-sensitive)
      </saml2:AttributeValue>
    </saml2:Attribute>
  </saml2:AttributeStatement>
</saml2:Assertion>
```

### 步骤 5：（可选）配置其他设置
<a name="saml-additional-settings"></a>

在**其他设置**下，配置以下可选字段：
+ **Subject key**（使用者密钥）：您可以将此字段留空，以便将 SAML 断言的 `NameID` 元素用于用户名。如果您的断言不使用此标准元素，而是将用户名作为自定义属性，请在此处指定该属性。
+ **Roles key**（角色密钥）：如果要使用后端角色（推荐），请在此字段指定断言的属性，例如 `role` 或 `group`。这是另一种情况，其中像 [SAML 跟踪](https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/)可以提供帮助。
+ **会话上线时间**-默认情况下， OpenSearch 控制面板会在 24 小时后将用户注销。通过指定新值，可以将此值配置为 60 到 1440（24 小时）之间的任何数字。

配置好后，请保存域。

### 第 6 步：更新你的 IdP URLs
<a name="saml-update-urls"></a>

如果您[在创建域时启用了 SAML 身份验证](#saml-configure-new)，则必须在 IdP 中指定临时 URLs 身份才能生成 XML 元数据文件。在域名状态更改为后`Active`，您可以获取正确的域名 URLs 并修改您的 IdP。

要检索 URLs，请选择域并选择**操作**、**编辑安全配置**。在 ** OpenSearch Dashboards/Kibana 的 SAML 身份验证**下，您可以找到正确的服务提供商实体 ID 和 SSO。 URLs复制这些值并使用它们来配置您的身份提供商，替换您在步骤 2 中提供的临时 URLs 身份提供商。

### 步骤 7：将 SAML 用户映射到角色
<a name="saml-map-users"></a>

当您的域名状态为 “激活” 且您的 IdP 配置正确后，请导航至 OpenSearch 控制面板。
+ 如果您选择了 SP 启动的 URL，请导航到 `domain-endpoint/_dashboards`。若要直接登录到特定租户，可将 `?security_tenant=tenant-name` 附加到 URL。
+ 如果选择了 IdP 启动的 URL，请导航到身份提供程序的应用程序目录。

在这两种情况下，请以 SAML 主用户或属于 SAML 主后端角色的用户身份录入。要继续执行步骤 7 中的示例，请以 `jdoe` 或 `admins` 组中 成员录入)。

 OpenSearch 仪表板加载后，选择**安全**、**角色**。然后，[映射角色](fgac.md#fgac-mapping)以允许其他用户访问 OpenSearch 仪表板。

例如，您可能将受信任的同事 `jroe` 映射添加到 `all_access` 和 `security_manager` 角色。您还可以将后端角色 `analysts` 映射添加到 `readall` 和 `opensearch_dashboards_user` 角色。

如果您更喜欢使用 API 而不是 OpenSearch 控制面板，请参阅以下示例请求：

```
PATCH _plugins/_security/api/rolesmapping
[
  {
    "op": "add", "path": "/security_manager", "value": { "users": ["master-user", "jdoe", "jroe"], "backend_roles": ["admins"] }
  },
  {
    "op": "add", "path": "/all_access", "value": { "users": ["master-user", "jdoe", "jroe"], "backend_roles": ["admins"] }
  },
  {
    "op": "add", "path": "/readall", "value": { "backend_roles": ["analysts"] }
  },
  {
    "op": "add", "path": "/opensearch_dashboards_user", "value": { "backend_roles": ["analysts"] }
  }
]
```

## 配置 SP 和 IdP 发起的身份验证
<a name="saml-idp-with-sp"></a>

如果要配置 SP 和 IDP 启动的身份验证，则必须通过身份提供程序执行此操作。例如，在 Okta 中，您可以执行以下步骤：

1. 在您的 SAML 应用程序中，转到 **General**（通用）、**SAML settings**（SAML 设置）。

1. 对于 **Single sign on URL**（单点登录 URL），提供您的 *IdP* 发起的 SSO URL。例如 `https://search-domain-hash/_dashboards/_opendistro/_security/saml/acs/idpinitiated`。

1. 启用 “**允许此应用请求其他 SSO URLs**”。

1. 在 “**可请求的 SSO**” 下 URLs，添加一个或多个 *SP 发起的* SSO。 URLs例如 `https://search-domain-hash/_dashboards/_opendistro/_security/saml/acs`。

## 配置 SAML 身份验证 (AWS CLI)
<a name="saml-enable-cli"></a>

以下 AWS CLI 命令为现有域上的 OpenSearch 仪表板启用 SAML 身份验证：

```
aws opensearch update-domain-config \
  --domain-name my-domain \
  --advanced-security-options '{"SAMLOptions":{"Enabled":true,"MasterUserName":"my-idp-user","MasterBackendRole":"my-idp-group-or-role","Idp":{"EntityId":"entity-id","MetadataContent":"metadata-content-with-quotes-escaped"},"RolesKey":"optional-roles-key","SessionTimeoutMinutes":180,"SubjectKey":"optional-subject-key"}}'
```

必须转义元数据 XML 中的所有引号和换行符。例如，使用 `<KeyDescriptor use=\"signing\">\n` 而不是 `<KeyDescriptor use="signing">` 和换行符。有关使用 AWS CLI，请参阅 [AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/)。

## 配置 SAML 身份验证（配置 API）
<a name="saml-enable-api"></a>

以下对配置 API 的请求为现有域上的 OpenSearch 仪表板启用 SAML 身份验证：

```
POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config
{
  "AdvancedSecurityOptions": {
    "SAMLOptions": {
      "Enabled": true,
      "MasterUserName": "my-idp-user",
      "MasterBackendRole": "my-idp-group-or-role",
      "Idp": {
        "EntityId": "entity-id",
        "MetadataContent": "metadata-content-with-quotes-escaped"
      },
      "RolesKey": "optional-roles-key",
      "SessionTimeoutMinutes": 180,
      "SubjectKey": "optional-subject-key"
    }
  }
}
```

必须转义元数据 XML 中的所有引号和换行符。例如，使用 `<KeyDescriptor use=\"signing\">\n` 而不是 `<KeyDescriptor use="signing">` 和换行符。有关使用配置 API 的详细信息，请参阅[OpenSearch 服务 API 参考](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_Welcome.html)。

## SAML 故障排除
<a name="saml-troubleshoot"></a>


| 错误 | Details | 
| --- | --- | 
| 不允许您的请求：*/some/path*“”。 | 验证您提供了正确的 [SSO URL](#saml-enable) （步骤 3）发送给您的身份提供程序。 | 
|  请提供有效的身份提供者元数据文档以启用 SAML。  |  您的 IdP 元数据文件不符合 SAML 2.0 标准。使用验证工具检查错误。  | 
|  SAML 配置选项不显示在控制台中。  |  更新到最新[服务软件](service-software.md)。  | 
|  SAML 配置错误：检索 SAML 配置时出现问题，请检查您的设置。  |  出现这种通用错误的原因很多。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/saml.html)  | 
|  缺少角色：此用户没有可用的角色，请与您的系统管理员联系。  |  您已成功进行身份验证，但 SAML 断言中的用户名和任何后端角色未映射到任何角色，因此没有权限。这些映射区分大小写。 系统管理员可以使用类似于 [SAML-tracer](https://addons.mozilla.org/en-US/firefox/addon/saml-tracer/) 的工具来验证 SAML 断言的内容，然后使用以下请求检查角色映射： <pre>GET _plugins/_security/api/rolesmapping</pre>  | 
|  尝试访问 OpenSearch 控制面板时，您的浏览器会持续重定向或收到 HTTP 500 错误。  |  如果 SAML 断言包含大量角色，总共约 1,500 个字符，则可能会发生这些错误。例如，如果您传递 80 个角色（其平均长度为 20 个字符），则可能会超过 Web 浏览器中 Cookie 的大小限制。从 2.7 OpenSearch 版开始，SAML 断言支持最多 5000 个字符的角色。  | 
|  您无法注销 ADFS。  |  ADFS 要求对所有注销请求进行签名，但 OpenSearch 服务不支持。`<SingleLogoutService />`从 IdP 元数据文件中移除以强制 OpenSearch 服务使用自己的内部注销机制。  | 
|  `Could not find entity descriptor for __PATH__.`  |  提供给 OpenSearch 服务的元数据 XML 中提供的 IdP 的实体 ID 与 SAML 响应中提供的实体 ID 不同。要解决这个问题，请确保二者匹配。在您的域上启用 **CW 应用程序错误日志**，查找错误消息，调试 SAML 集成问题。  | 
|  `Signature validation failed. SAML response rejected.`  |  OpenSearch 服务无法使用元数据 XML 中提供的 IdP 证书验证 SAML 响应中的签名。可能是手动错误，也可能是 IdP 已轮换证书。在通过提供给 OpenSearch 服务的元数据 XML 中更新来自您的 IdP 的最新证书。 AWS 管理控制台  | 
|  `__PATH__ is not a valid audience for this response.`  |  SAML 响应的受众字段与域端点不匹配。要修复此错误，请更新 SP 受众字段，使其与域端点相符。如果已启用自定义端点，则受众字段应与自定义端点匹配。在您的域上启用 **CW 应用程序错误日志**，查找错误消息，调试 SAML 集成问题。  | 
|  浏览器响应收到代码为 `Invalid Request Id` 的 HTTP 400 错误。  |  如果将 IdP 启动的 URL 配置为 `<DashboardsURL>/_opendistro/_security/saml/acs` 格式，通常会发生此错误。相反，改用 `<DashboardsURL>/_opendistro/_security/saml/acs/idpinitiated` 格式配置 URL。  | 
|  通过 `__PATH__`（而不是 `__PATH__`）接收响应。  |  SAML 响应的目标字段与以下 URL 格式之一不匹配： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/saml.html) 根据您使用的登录流程（SP 启动或 IDP 发起的），在与其中一个匹配的目标字段中输入。 OpenSearch URLs  | 
|  响应具有 `InResponseTo` 属性，但没有 `InResponseTo`。  |  您正在使用 IDP 启动的 URL 执行 SP 启动的登录流。改用 SP 启动的 URL。  | 

## 禁用 SAML 身份验证
<a name="saml-disable"></a>

**禁用 OpenSearch 仪表板的 SAML 身份验证（控制台）**

1. 选择域、**Actions（操作）**和 **Edit security configuration（编辑安全配置）**。

1. 取消选中**启用 SAML 身份验证**。

1. 选择**保存更改**。

1. 域完成处理后，请使用以下请求验证精细访问控制角色映射：

   ```
   GET _plugins/_security/api/rolesmapping
   ```

   禁用仪表板的 SAML 身份验证*不会*删除 SAML 主用户名（即 SAML 主后端角色） and/or 的映射。如果要删除这些映射，请使用内部用户数据库（如果已启用）登录到控制面板，或使用 API 删除它们：

   ```
   PUT _plugins/_security/api/rolesmapping/all_access
   {
     "users": [
       "master-user"
     ]
   }
   ```