# 创建SAML提供商 - CreateSAMLProviderV5
#### 功能介绍
该接口可以用于创建一个支持 SAML 2.0 的身份提供商 (IdP)。
您通过此操作创建的 SAML 提供商可用作信任委托的信任策略中的主体 (Principal)，用于在华为云和 SAML 提供商之间建立信任关系。 该信任策略可以允许使用 SAML IdP 登录的联邦用户切换至该信任委托，您可以创建使用 Web 单点登录 (SSO) 到 华为云控制台的 IAM 信任委托，或者支持对华为云进行 API 访问的 IAM 信任委托。
当您创建 SAML 提供商时，您需要上传从 IdP 获得的 SAML 元数据文档。该文档包含颁发者的名称、过期信息以及可用于验证 IdP 发送的 SAML 身份验证响应（断言）的密钥。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=CreateSAMLProviderV5&version=v5)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-iam5/iam_02_1124.html)。
| 授权项                        | 访问级别  | 资源类型（\*为必须）     | 条件键 | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| iam:samlProviders:createV5 | Write | samlProvider \* | -   | -  | -      |
   
#### URI
POST /v5/saml-providers
#### 请求参数
表1请求Body参数 
| 参数                        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| name                      | 是    | String | **参数解释**： SAML 提供商的名称。 **约束限制**： 不涉及 **取值范围**： 字符串长度在 1 到 64 之间，并且只能包含：字母、数字、下划线（_）、中划线（-）。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| saml_metadata_document    | 是    | String | **参数解释**： 由支持 SAML 2.0 的身份提供商 (IdP) 生成的 XML 文档。该文档包含颁发者的名称、过期信息，以及可用于验证从 IdP 接收到的 SAML 身份验证响应（断言）的密钥。 **约束限制**： 不涉及。 **取值范围**： 长度为1000\~512000个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                   |
| assertion_encryption_mode | 否    | String | **参数解释**： 指定 SAML 提供商的加密设置。 **约束限制**： 不涉及。 **取值范围**： 取值范围为\[Required,Allowed\]。 - Required：仅接受加密的SAML断言。   - Allowed：接受加密或未加密的SAML断言。    **默认取值**： 不涉及。 |
| add_private_key           | 否    | String | **参数解释**： 添加解密 SAML 断言的私钥，必须是一个 PEM 格式的 RSA 私钥。在接收到加密的 SAML 断言时，IAM 会基于 RSA-OAEP 算法使用该私钥解密得到用于加密 SAML 断言的对称密钥，然后再基于 AES-GCM 或 AES-CBC 加密算法使用对称密钥解密出 SAML 断言明文。 **约束限制**： 不涉及。 **取值范围**： 字符串必须由 1 个或多个字符组成，这些字符可以是：空格、可见 ASCII 字符、Latin-1 扩展字符、Tab、换行、回车，长度为1\~16384个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                              |
| description               | 否    | String | **参数解释**： 身份提供商描述。 **约束限制**： 不涉及。 **取值范围**： 不能包含特定字符"@"、"#"、"%"、"\&"、"\<"、"\>"、""、"$"、"\^"和"\*"的字符串，长度为0\~255个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 响应参数
**状态码：201**
表2响应Body参数 
| 参数            | 参数类型                                                                  | 描述                                                                                                                                                         |
|:---|:---|:---|
| saml_provider | [saml_provider] object | **参数解释**： SAML 提供商。 **取值范围**： 不涉及。 |
   
 表3saml_provider 
| 参数                        | 参数类型                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| provider_id               | String                                                                        | **参数解释**： SAML 身份提供商的ID。 **取值范围**： 字符串长度在 1 到 64 之间，并且只能包含：字母、数字、中划线（-）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| name                      | String                                                                        | **参数解释**： SAML 身份提供商的名称。 **取值范围**： 字符串长度在 1 到 64 之间，并且只能包含：字母、数字、下划线（_）、中划线（-）。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| description               | String                                                                        | **参数解释**： 身份提供商描述。 **取值范围**： 字符串长度在 0 到 255 之间，不能包含特定字符"@"、"#"、"%"、"\&"、"\<"、"\>"、""、"$"、"\^"和"\*"的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| urn                       | String                                                                        | **参数解释**： 统一资源名称。 **取值范围**： 字符串长度在 16 到 1500 之间，可以包含：字母、数字、斜杠（/）、等号（=）、下划线（_）、冒号（:）、中划线（-）                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| saml_metadata_document    | String                                                                        | **参数解释**： 支持 SAML 2.0 的身份提供商 (IdP) 的 XML 文档。 **取值范围**： 长度范围为\[1000,512000\]。                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| assertion_encryption_mode | String                                                                        | **参数解释**： 指定 SAML 身份提供商的加密设置。 **取值范围**： 取值范围为\[Required,Allowed\]。 - Required：仅接受加密的SAML断言。   - Allowed：接受加密或未加密的SAML断言。    |
| private_keys              | Array of [private_keys] objects | **参数解释**： 解密 SAML 断言的私钥。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| created_at                | String                                                                        | **参数解释**： SAML 身份提供商创建时间。使用UTC时间格式，格式为yyyy-MM-ddTHH:mm:ss.SSSZ，例如2023-09-13T06:51:20.550Z。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                               |
| expires_at                | String                                                                        | **参数解释**： SAML 身份提供商过期时间。使用UTC时间格式，格式为yyyy-MM-ddTHH:mm:ss.SSSZ，例如2023-09-13T06:51:20.550Z。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
 表4private_keys 
| 参数        | 参数类型   | 描述                                                                                                                                                                                 |
|:---|:---|:---|
| key_id    | String | **参数解释**： 解密 SAML 断言私钥的 ID。 **取值范围**： 不涉及。                 |
| timestamp | String | **参数解释**： 上传解密 SAML 断言私钥的时间，符合 ISO 8601 格式。 **取值范围**： 不涉及。 |
   
**状态码：400**
表5响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                            |
|:---|:---|:---|
| error_code | String | **参数解释**： 错误码，请参见[错误码](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 格式为PAP5.XXXX，例如 PAP5.0012。 |
| error_msg  | String | **参数解释**： 错误信息，请参见[错误信息](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 不涉及。                     |
| request_id | String | **参数解释**： API 请求的唯一标识，用于排查接口调用异常。 **取值范围**： 不涉及。                                                                      |
   
**状态码：403**
表6响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码，请参见[错误码](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 格式为PAP5.XXXX，例如PAP5.0012。                                    |
| error_msg                     | String | **参数解释**： 错误信息，请参见[错误信息](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 不涉及。                                                       |
| request_id                    | String | **参数解释**： API请求的唯一标识，用于排查接口调用异常。 **取值范围**： 不涉及。                                                                                                         |
| encoded_authorization_message | String | **参数解释**： 认证失败时返回的加密详细信息，用于定位认证问题。 可以通过STS5解密接口进行解密，请参见[接口链接](https://support.huaweicloud.com/api-iam5/DecodeAuthorizationMessage.html)。 **取值范围**： 不涉及。 |
   
**状态码：409**
表7响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                            |
|:---|:---|:---|
| error_code | String | **参数解释**： 错误码，请参见[错误码](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 格式为PAP5.XXXX，例如 PAP5.0012。 |
| error_msg  | String | **参数解释**： 错误信息，请参见[错误信息](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。 **取值范围**： 不涉及。                     |
| request_id | String | **参数解释**： API 请求的唯一标识，用于排查接口调用异常。 **取值范围**： 不涉及。                                                                      |
   
#### 请求示例
创建SAML提供商
```
POST https://{endpoint}/v5/saml-providers
{
  "saml_metadata_document" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<md:EntityDescriptor entityID=\"http://***.***.com/****************************\"\n                     xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\">\n\t<md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\"\n\t                     protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n\t\t<md:KeyDescriptor use=\"signing\">\n\t\t\t<ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n\t\t\t\t<ds:X509Data>\n\t\t\t\t\t<ds:X509Certificate>example************************************************************************************************************************************************************************************************************************************************************************************************************************************************example</ds:X509Certificate>\n\t\t\t\t</ds:X509Data>\n\t\t\t</ds:KeyInfo>\n\t\t</md:KeyDescriptor>\n\t\t<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>\n\t\t<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n\t\t<md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\"\n\t\t                        Location=\"https://***************.okta.com/app/***************_oktaaws_1/****************************/sso/saml\"/>\n\t\t<md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\"\n\t\t                        Location=\"https://***************.okta.com/app/***************_oktaaws_1/****************************/sso/saml\"/>\n\t</md:IDPSSODescriptor>\n</md:EntityDescriptor>",
  "name" : "example_saml_provider",
  "description" : "example SAML identity provider"
}
```
#### 响应示例
**状态码：201**
```
{
  "saml_provider" : {
    "provider_id" : "example-saml-provider-id",
    "name" : "example_saml_provider",
    "urn" : "iam::123456789012:user:example-saml-user",
    "description" : "example SAML identity provider",
    "saml_metadata_document" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<md:EntityDescriptor entityID=\"http://***.***.com/****************************\"\n                     xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\">\n\t<md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\"\n\t                     protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n\t\t<md:KeyDescriptor use=\"signing\">\n\t\t\t<ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n\t\t\t\t<ds:X509Data>\n\t\t\t\t\t<ds:X509Certificate>example************************************************************************************************************************************************************************************************************************************************************************************************************************************************example</ds:X509Certificate>\n\t\t\t\t</ds:X509Data>\n\t\t\t</ds:KeyInfo>\n\t\t</md:KeyDescriptor>\n\t\t<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>\n\t\t<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n\t\t<md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\"\n\t\t                        Location=\"https://***************.okta.com/app/***************_oktaaws_1/****************************/sso/saml\"/>\n\t\t<md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\"\n\t\t                        Location=\"https://***************.okta.com/app/***************_oktaaws_1/****************************/sso/saml\"/>\n\t</md:IDPSSODescriptor>\n</md:EntityDescriptor>",
    "assertion_encryption_mode" : "Allowed",
    "private_keys" : [ ],
    "created_at" : "2026-06-22T12:01:57.989Z",
    "expires_at" : "2126-05-29T12:01:57.955Z"
  }
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 201 | 请求成功。   |
| 400 | 请求体异常。  |
| 403 | 没有操作权限。 |
| 409 | 请求冲突。   |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iam5/ErrorCode.html)。
