# 更新工作负载身份
#### 功能介绍
更新指定工作负载身份的配置信息，包括OAuth2回调地址、授权配置和标签等。
#### URI
PUT /v1/workload-identities/{workload_identity_name}
表1路径参数 
| 参数                     | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| workload_identity_name | 是    | String | **参数解释**： 工作负载身份名称，用于唯一标识一个工作负载身份。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~56个字符。 **默认取值**： 不涉及。 |
   
#### 请求参数
表2请求Body参数 
| 参数                                  | 是否必选 | 参数类型                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| allowed_resource_oauth2_return_urls | 否    | Array of strings                                                                           | **参数解释**： 工作负载身份关联的资源OAuth2回调地址列表。用于指定OAuth2授权流程中允许的回调地址，确保令牌仅返回到受信任的URL。 **约束限制**： 列表最多允许20个回调地址。 **取值范围**： 符合URL格式的字符串，必须以协议开头（如https://），长度为1\~2048个字符。 **默认取值**： 不涉及。                                |
| authorizer_configuration            | 否    | [AuthorizerConfiguration] object | **参数解释**： 入站授权配置，用于定义工作负载身份如何验证入站请求的身份。根据授权类型（authorizer_type）的不同，需要配置对应的授权参数。 **约束限制**： 当authorizer_type为CUSTOM_JWT时，需配置custom_jwt；当authorizer_type为API_KEY时，需配置key_auth。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
| tags                                | 否    | Array of [Tag] objects                               | **参数解释**： 自定义标签列表，用于为工作负载身份添加标签，便于分类和管理。 **约束限制**： 列表最多20个标签。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                              |
   
 表3AuthorizerConfiguration 
| 参数         | 是否必选 | 参数类型                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| custom_jwt | 否    | [CustomJWTAuthorizerConfiguration] object | **参数解释**： 自定义JWT授权配置，用于配置通过外部身份提供商签发的JWT令牌进行入站请求身份验证的参数。当authorizer_type为CUSTOM_JWT时使用此配置。 **约束限制**： 仅当authorizer_type为CUSTOM_JWT时有效。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
| key_auth   | 否    | [KeyAuthAuthorizerConfiguration] object     | **参数解释**： API Key授权配置，用于配置通过预置API密钥进行入站请求身份验证的参数。当authorizer_type为API_KEY时使用此配置。 **约束限制**： 仅当authorizer_type为API_KEY时有效。 **取值范围**： 不涉及。 **默认取值**： 不涉及。              |
   
 表4CustomJWTAuthorizerConfiguration 
| 参数               | 是否必选 | 参数类型                                                                                             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| discovery_url    | 是    | String                                                                                           | **参数解释**： OpenID Connect发现地址（Discovery URL），用于获取身份提供商的OIDC配置信息，包括签发者地址、JWKS端点等。 **约束限制**： 不涉及。 **取值范围**： 必须以https://开头，且以/.well-known/openid-configuration结尾，长度为1\~2048个字符。 **默认取值**： 不涉及。 |
| allowed_audience | 否    | Array of strings                                                                                 | **参数解释**： 允许的JWT受众（audience）值列表。入站JWT令牌中的aud声明必须匹配此列表中的某个值才能通过验证。 **约束限制**： 列表最多允许100个值。 **取值范围**： 只能由英文字母、数字及"."、"_"、"-"组成，单个值长度为1\~256个字符。 **默认取值**： 不涉及。                                |
| allowed_clients  | 否    | Array of strings                                                                                 | **参数解释**： 允许的JWT客户端标识（client_id）列表。入站JWT令牌中的client_id声明必须匹配此列表中的某个值才能通过验证。 **约束限制**： 列表最多允许100个值。 **取值范围**： 只能由英文字母、数字及"."、"_"、"-"组成，单个值长度为1\~256个字符。 **默认取值**： 不涉及。                       |
| allowed_scopes   | 否    | Array of strings                                                                                 | **参数解释**： 允许的JWT scope值列表。入站JWT令牌中的scope声明必须包含此列表中的某个值才能通过验证。 **约束限制**： 列表最多允许100个值。 **取值范围**： 只能由英文字母、数字及"."、"_"、":"、"-"组成，单个值长度为1\~256个字符。 **默认取值**： 不涉及。                                |
| custom_claims    | 否    | Array of [CustomClaimValidation] objects | **参数解释**： 自定义声明（claim）验证规则列表，用于对入站JWT令牌中的自定义声明字段进行匹配验证。 **约束限制**： 列表最多允许100条规则。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                              |
   
 表5CustomClaimValidation 
| 参数                             | 是否必选 | 参数类型                                                                                             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| authorizing_claim_match_value  | 是    | [AuthorizingClaimMatchValue] object | **参数解释**： 授权声明匹配值，定义入站JWT令牌中声明字段值与预期值之间的匹配关系。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| inbound_token_claim_name       | 是    | String                                                                                           | **参数解释**： 需要验证的自定义声明字段名称。入站JWT令牌中必须包含此声明字段，且其值需满足匹配规则。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"_"、"."、"-"、":"组成，长度为1\~255个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                  |
| inbound_token_claim_value_type | 是    | String                                                                                           | **参数解释**： 声明字段值的数据类型，用于确定如何解析和匹配入站JWT令牌中的声明值。 **约束限制**： 不涉及。 **取值范围**： - STRING：字符串类型，声明值为单个字符串。   - STRING_ARRAY：字符串数组类型，声明值为字符串列表。    **默认取值**： 不涉及。 |
   
 表6AuthorizingClaimMatchValue 
| 参数                   | 是否必选 | 参数类型                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| claim_match_operator | 是    | String                                                                     | **参数解释**： 声明匹配操作符，定义声明字段值与匹配值之间的关系类型。 **约束限制**： 不涉及。 **取值范围**： - EQUALS：等于，声明值必须完全等于匹配值。   - CONTAINS：包含，声明值（字符串）必须包含匹配值。   - CONTAINS_ANY：包含任意一个，声明值（数组）中至少包含匹配值列表中的一个元素。    **默认取值**： 不涉及。 |
| claim_match_value    | 是    | [ClaimMatchValue] object | **参数解释**： 声明匹配值，指定用于与入站JWT令牌中声明字段值进行比对的预期值。根据声明值类型（STRING或STRING_ARRAY），使用match_value_string或match_value_string_list。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表7ClaimMatchValue 
| 参数                      | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| match_value_string      | 否    | String           | **参数解释**： 字符串类型的匹配值，当inbound_token_claim_value_type为STRING时使用。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"_"、"."、"-"组成，长度为1\~255个字符。 **默认取值**： 不涉及。               |
| match_value_string_list | 否    | Array of strings | **参数解释**： 字符串数组类型的匹配值列表项，当inbound_token_claim_value_type为STRING_ARRAY时使用。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"_"、"."、"-"组成，单个值长度为1\~255个字符。 **默认取值**： 不涉及。 |
   
 表8KeyAuthAuthorizerConfiguration 
| 参数       | 是否必选 | 参数类型                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| api_keys | 是    | Array of [ApiKeyInfo] objects | **参数解释**： API密钥信息列表，用于配置一个或多个API密钥。在密钥轮换期间，列表中的任意一个密钥均可用于身份验证。 **约束限制**： 列表最多允许10个API密钥。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
   
 表9ApiKeyInfo 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| api_key      | 是    | String | **参数解释**： API密钥值。在密钥轮换期间，列表中的任意一个密钥均可用于身份验证。如果为空，系统将自动生成一个随机字符串。 **约束限制**： 不涉及。 **取值范围**： 不能以空格开头或结尾，长度为1\~1024个字符。 **默认取值**： 不涉及。 |
| api_key_name | 否    | String | **参数解释**： API密钥名称，用于标识和区分不同的API密钥。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为0\~64个字符。 **默认取值**： 空字符串。                      |
   
 表10Tag 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| key   | 是    | String | **参数解释**： 标签键，用于标识标签的名称。 **约束限制**： 首尾不能包含空格，不能以"_sys_"开头。 **取值范围**： 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合，长度为1\~128个字符。 **默认取值**： 不涉及。 |
| value | 是    | String | **参数解释**： 标签值，用于标识标签的具体内容。 **约束限制**： 不涉及。 **取值范围**： 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"\&"符号的任意组合，可以是空字符串，长度为0\~255个字符。 **默认取值**： 不涉及。    |
   
#### 响应参数
**状态码：200**
表11响应Body参数 
| 参数                | 参数类型                                                                          | 描述                                                                                                                                                                                                          |
|:---|:---|:---|
| workload_identity | [WorkloadIdentity] object | **参数解释**： 工作负载身份的详细信息，包含名称、URN、授权类型、API密钥凭证、创建者、创建时间、更新时间和标签等。 **取值范围**： 不涉及。 |
   
 表12WorkloadIdentity 
| 参数                                  | 参数类型                                                            | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| workload_identity_id                | String                                                          | **参数解释**： 工作负载身份的唯一标识。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| name                                | String                                                          | **参数解释**： 工作负载身份名称，用于唯一标识一个工作负载身份。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~56个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| urn                                 | String                                                          | **参数解释**： 工作负载身份的唯一资源名称（URN），由系统自动生成，用于全局唯一标识一个工作负载身份。 **取值范围**： 只能由英文字母、数字及"/"、"="、"_"、":"、"-"组成，长度为16\~1500个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| allowed_resource_oauth2_return_urls | Array of strings                                                | **参数解释**： 工作负载身份关联的资源OAuth2回调地址列表。 **取值范围**： 符合URL格式的字符串，必须以协议开头（如https://），长度为1\~2048个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| authorizer_type                     | String                                                          | **参数解释**： 授权类型，用于指定工作负载身份的入站请求身份验证方式。不同的授权类型对应不同的授权配置。 **取值范围**： - CUSTOM_JWT：自定义JWT授权，通过外部身份提供商的JWT令牌进行身份验证。   - IAM：IAM授权，通过华为云IAM服务进行身份验证。   - API_KEY：API Key授权，通过预置的API密钥进行身份验证。   - NONE：无授权，不进行入站请求身份验证。    |
| api_key_secret                      | [Secret] object       | **参数解释**： 凭证信息，包含凭证ID和凭证名称。用于API Key授权方式下，标识存储在CSMS（凭证管理服务）中的API密钥凭证。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| created_by                          | [CreatedBy] object | **参数解释**： 工作负载身份的创建者信息，包含创建者类型和创建者标识。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| created_at                          | String                                                          | **参数解释**： UTC时间戳，记录资源的创建或更新时间。 **取值范围**： 使用UTC+0时间格式，格式为yyyy-MM-ddTHH:mm:ssZ。例如：2025-01-01T00:00:00Z。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| updated_at                          | String                                                          | **参数解释**： UTC时间戳，记录资源的创建或更新时间。 **取值范围**： 使用UTC+0时间格式，格式为yyyy-MM-ddTHH:mm:ssZ。例如：2025-01-01T00:00:00Z。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| tags                                | Array of [Tag] objects   | **参数解释**： 自定义标签列表。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表13Secret 
| 参数          | 参数类型   | 描述                                                                                                                                                                                                     |
|:---|:---|:---|
| secret_id   | String | **参数解释**： 凭证ID，唯一标识CSMS中的凭证。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~64个字符。 |
| secret_name | String | **参数解释**： 凭证名称，CSMS中存储的凭证名称。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~64个字符。 |
   
 表14CreatedBy 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| type       | String | **参数解释**： 工作负载身份创建者类型，标识创建者是由用户还是由服务创建的。 **取值范围**： - CUSTOMER：由用户创建。   - SERVICE：由服务自动创建。    |
| identifier | String | **参数解释**： 工作负载身份创建者标识。当创建者类型为CUSTOMER时，标识为用户的账号ID；当创建者类型为SERVICE时，标识为服务名称。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表15Tag 
| 参数    | 参数类型   | 描述                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| key   | String | **参数解释**： 标签键，用于标识标签的名称。 **取值范围**： 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合，长度为1\~128个字符。                |
| value | String | **参数解释**： 标签值，用于标识标签的具体内容。 **取值范围**： 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"\&"符号的任意组合，可以是空字符串，长度为0\~255个字符。 |
   
**状态码：400**
表16响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                                                  |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
**状态码：403**
表17响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                                                  |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
**状态码：404**
表18响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                                                  |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
**状态码：409**
表19响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                                                  |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
#### 请求示例
更新工作负载身份的OAuth2回调地址和API Key授权配置。
```
PUT https://{endpoint}/v1/workload-identities/{workload_identity_name}
{
  "allowed_resource_oauth2_return_urls" : [ "https://example.com/oauth2/callback", "https://example.com/oauth2/callback2" ],
  "authorizer_configuration" : {
    "key_auth" : {
      "api_keys" : [ {
        "api_key" : "22243eefff**",
        "api_key_name" : "test-key-1"
      }, {
        "api_key" : "22243eefff**",
        "api_key_name" : "test-key-2"
      } ]
    }
  }
}
```
#### 响应示例
**状态码：200**
```
{
  "workload_identity" : {
    "workload_identity_id" : "684a2c3e5f1b9d0e7a3c4f56",
    "name" : "my_workload_identity",
    "urn" : "agentIdentity:<region>:<account-id>:workloadIdentity:workloadIdentityDirectory/<workload-directory-id>/<workload-identity-name>",
    "authorizer_type" : "API_KEY",
    "api_key_secret" : {
      "secret_id" : "285624f5-5958-4f36-b171-168303615bce",
      "secret_name" : "test-secret"
    },
    "allowed_resource_oauth2_return_urls" : [ "https://example.com/oauth2/callback", "https://example.com/oauth2/callback2" ],
    "created_by" : {
      "type" : "SERVICE",
      "identifier" : "service.AgentRuntime"
    },
    "created_at" : "2025-01-01 00:00:00",
    "updated_at" : "2025-01-03 00:00:00",
    "tags" : [ {
      "key" : "key-1",
      "value" : "value-1"
    } ]
  }
}
```
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 200 | 请求成功。     |
| 400 | 请求体异常。    |
| 403 | 没有操作权限。   |
| 404 | 未找到相应的资源。 |
| 409 | 请求冲突。     |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-agentidentity/ErrorCode.html)。
