
# 创建OpenID Connect身份提供商配置 - CreateOpenIdConnectConfig
#### 功能介绍
该接口可以用于++[管理员](https://support.huaweicloud.com/usermanual-iam/iam_01_0001.html)++ 在[创建身份提供商](https://support.huaweicloud.com/api-iam/iam_13_0204.html)，并[注册协议](https://support.huaweicloud.com/api-iam/iam_13_0404.html)（OIDC协议）后，创建OpenID Connect身份提供商配置。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见：[地区和终端节点](https://developer.huaweicloud.com/endpoint?IAM)。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=CreateOpenIdConnectConfig)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-iam/iam_19_0001.html)。
#### URI
POST /v3.0/OS-FEDERATION/identity-providers/{idp_id}/openid-connect-config
表1路径参数 
| 参数     | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| idp_id | 是    | String | 身份提供商名称。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                             |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 该字段内容填为"application/json;charset=utf8"。                                                                                        |
| X-Auth-Token | 是    | String | 访问令牌，承载用户的身份、权限等信息。 token所需权限请参见[授权项](https://support.huaweicloud.com/api-iam/iam_19_0001.html)。 |
   
表3请求Body参数 
| 参数                                                         | 是否必选 | 参数类型   | 描述                  |
|:---|:---|:---|:---|
| [openid_connect_config] | 是    | object | OpenID Connect配置详情。 |
   
 表4CreateOpenIDConnectConfig 
| 参数                     | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| access_mode            | 是    | String | 访问方式。 - program_console: 支持编程访问和管理控制台访问方式。  - program: 支持编程访问方式                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| idp_url                | 是    | String | OpenID Connect身份提供商标识，对应ID token中iss字段。 最小长度：10。最大长度：255。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| client_id              | 是    | String | 在OpenID Connect身份提供商注册的客户端ID。 最小长度：5。最大长度：255。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| authorization_endpoint | 否    | String | OpenID Connect身份提供商授权地址。 **访问方式为program_console必选**。 最小长度：10。最大长度：255。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| scope                  | 否    | String | 授权请求信息范围。 **访问方式为program_console必选**。 枚举值： - openid  - email  - profile 说明： - 此字段必选值"openid"。  - 最少1个值，最多10个值，之间使用空格分隔。   例如： "openid" 、"openid email"、 "openid profile"、 "openid email profile"。    |
| response_type          | 否    | String | 授权请求返回的类型。 **访问方式为program_console必选**。 枚举值： - id_token                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| response_mode          | 否    | String | 授权请求返回方式。 **访问方式为program_console必选**。 枚举值： - fragment  - form_post                                                                                                                                                                                                                                                                                                                                                                       |
| signing_key            | 是    | String | OpenID Connect身份提供商ID Token签名的公钥。 最小长度：10。最大长度：30000。 格式示例： ``` { "keys":[ { "kid":"d05ef20c4512645vv1..." , "n":"cws_cnjiwsbvweolwn_-vnl...", "e":"AQAB", "kty":"RSA", "use":"sig", "alg":"RS256" } ] } ```                                                                                                                                                                                                                                                                                                                                                                                          |
   
#### 响应参数
**状态码为 201** **时:**
表5响应Body参数 
| 参数                                                        | 参数类型   | 描述                  |
|:---|:---|:---|
| [openid_connect_config] | object | OpenID Connect配置详情。 |
   
 表6openid_connect_config 
| 参数                     | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| access_mode            | String | 访问方式。 - program_console: 支持编程访问和管理控制台访问方式。  - program: 支持编程访问方式。                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| idp_url                | String | OpenID Connect身份提供商标识。对应ID token中iss字段。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| client_id              | String | 在OpenID Connect身份提供商注册的客户端ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| authorization_endpoint | String | OpenID Connect身份提供商授权地址。 **访问方式为program方式时返回null。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| scope                  | String | 授权请求信息范围。 **访问方式为program方式时返回null。** 枚举值： - openid  - email  - profile 说明： - 此字段必选值"openid"。  - 最少1个值，最多10个值，之间使用空格分隔。   例如： "openid" 、"openid email"、 "openid profile"、 "openid email profile"。    |
| response_type          | String | 授权请求返回的类型。 **访问方式为program方式时返回null。** 枚举值： - id_token                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| response_mode          | String | 授权请求返回方式。 **访问方式为program方式时返回null。** 枚举值： - fragment  - form_post                                                                                                                                                                                                                                                                                                                                                                                  |
| signing_key            | String | OpenID Connect身份提供商ID Token签名的公钥。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 请求示例
- 创建支持编程访问配置的OpenID Connect身份提供商。
  ```
  POST /v3.0/OS-FEDERATION/identity-providers/{idp_id}/openid-connect-config 
    
   { 
     "openid_connect_config" : { 
       "access_mode" : "program", 
       "idp_url" : "https://accounts.example.com", 
       "client_id" : "client_id_example", 
       "signing_key" : "{\"keys\":[{\"kty\":\"RSA\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"example\",\"kid\":\"kid_example\",\"alg\":\"RS256\"}]}" 
     } 
   }
  ```
  
- 创建支持编程访问和管理控制台访问配置的OpenID Connect身份提供商。
  ```
  POST /v3.0/OS-FEDERATION/identity-providers/{idp_id}/openid-connect-config 
    
   { 
     "openid_connect_config" : { 
       "access_mode" : "program_console", 
       "idp_url" : "https://accounts.example.com", 
       "client_id" : "client_id_example", 
       "authorization_endpoint" : "https://accounts.example.com/o/oauth2/v2/auth", 
       "scope" : "openid", 
       "response_type" : "id_token", 
       "response_mode" : "form_post", 
       "signing_key" : "{\"keys\":[{\"kty\":\"RSA\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"example\",\"kid\":\"kid_example\",\"alg\":\"RS256\"}]}" 
     } 
   }
  ```
  
 
#### 响应示例
**状态码为 201** **时:**
创建成功。
- 示例 1
  ```
  { 
     "openid_connect_config" : { 
       "access_mode" : "program", 
       "idp_url" : "https://accounts.example.com", 
       "client_id" : "client_id_example", 
       "signing_key" : "{\"keys\":[{\"kty\":\"RSA\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"example\",\"kid\":\"kid_example\",\"alg\":\"RS256\"}]}" 
     } 
   }
  ```
  
- 示例 2
  ```
  { 
     "openid_connect_config" : { 
       "access_mode" : "program_console", 
       "idp_url" : "https://accounts.example.com", 
       "client_id" : "client_id_example", 
       "authorization_endpoint" : "https://accounts.example.com/o/oauth2/v2/auth", 
       "scope" : "openid", 
       "response_type" : "id_token", 
       "response_mode" : "form_post", 
       "signing_key" : "{\"keys\":[{\"kty\":\"RSA\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"example\",\"kid\":\"kid_example\",\"alg\":\"RS256\"}]}" 
     } 
   }
  ```
  
 
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 201 | 创建成功。     |
| 400 | 参数无效。     |
| 401 | 认证失败。     |
| 403 | 没有操作权限。   |
| 404 | 未找到相应的资源。 |
| 409 | 资源已存在。    |
| 500 | 系统内部错误。   |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iam/iam_02_0006.html)。
