<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
内容
可让您添加或更新与访问令牌关联的自定义属性。自定义属性可能包含部门名称、客户 ID 或会话标识符等内容。另请参阅自定义令牌和授权代码。
您只能添加或修改自定义属性。您无法使用此政策更改 scope、status、expires_in、developer_email、client_id、org_name 或 refresh_count 等字段。如果属性已经存在,则此政策会对其进行更新。如果不存在,则政策会添加此属性。引用的访问令牌必须有效且处于已批准状态。
示例
基本示例
以下是用于更新 OAuth 2.0 访问令牌的政策示例。以下示例通过查找名为 access_token
的查询参数来查找请求消息中的访问令牌。当客户端应用呈现访问令牌时,以下政策会在查询参数中查找访问令牌。然后,它会更新访问令牌的配置文件。它会将名为 department.id
的自定义属性添加到配置文件中。
<SetOAuthV2Info name="SetOAuthV2Info"> <AccessToken ref="request.queryparam.access_token"></AccessToken> <Attributes> <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute> </Attributes> </SetOAuthV2Info>
元素参考
元素参考描述了 SetOAuthV2 政策的元素和属性。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="SetOAuthV2Info-1"> <DisplayName>Set OAuth v2.0 Info 1</DisplayName> <AccessToken ref={some-variable}></AccessToken> <Attributes/> </SetOAuthV2Info> </xml>
<SetOAuthV2Info> 属性
<SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Set-OAuth-v20-Info-1">
下表介绍了所有政策父元素通用的特性:
属性 | 说明 | 默认 | 状态 |
---|---|---|---|
name |
政策的内部名称。 (可选)使用 |
不适用 | 必填 |
continueOnError |
设置为 设置为 |
false | 可选 |
enabled |
设置为 设为 |
是 | 可选 |
async |
此特性已弃用。 |
false | 已弃用 |
<DisplayName> 元素
除了用于 name
属性之外,还可以用于在管理界面代理编辑器中给政策添加不同的自然语言名称标签。
<DisplayName>Policy Display Name</DisplayName>
默认 |
不适用 如果省略此元素,则会使用政策的 |
---|---|
状态 | 可选 |
类型 | 字符串 |
<AccessToken> 元素
识别访问令牌所在位置的变量。例如,如果将访问令牌作为查询参数附加到请求消息,请指定 request.queryparam.access_token
。您可以使用引用令牌的任何有效变量。或者,传入字面令牌字符串(罕见大小写)。
<AccessToken ref="request.queryparam.access_token"></AccessToken>
默认: | 不适用 |
状态: | 必填 |
类型: | 字符串 |
特性
属性 | 说明 | 默认 | 状态 |
---|---|---|---|
ref |
访问令牌变量。通常从流变量检索。 |
无 | 可选 |
<Attributes> 元素
访问令牌配置文件中将要修改或扩充的一组属性。
默认: | 不适用 |
状态: | 必填 |
类型: | 无 |
<Attributes>/<Attribute> 元素
要更新的单个属性。
name 属性用于识别要更新的访问令牌配置文件的自定义属性。此示例展示了如何使用引用的变量值和静态值。
<Attributes> <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute> <Attribute name="foo">bar</Attribute> </Attributes>
默认: | 不适用 |
状态: | 可选 |
类型: | 不适用 |
特性
属性 | 说明 | 默认 | 状态 |
---|---|---|---|
名称 | 要添加或更改的配置文件属性的名称。 | 无 | |
ref |
要分配给配置文件属性的值。 |
无 | 可选 |
流变量
成功后,系统将设置以下流变量:
oauthv2accesstoken.{policyName}.access_token
oauthv2accesstoken.{policyName}.client_id
oauthv2accesstoken.{policyName}.refresh_count
oauthv2accesstoken.{policyName}.organization_name
oauthv2accesstoken.{policyName}.expires_in //--in seconds
oauthv2accesstoken.{policyName}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policyName}.issued_at
oauthv2accesstoken.{policyName}.status
oauthv2accesstoken.{policyName}.api_product_list
oauthv2accesstoken.{policyName}.token_type
oauthv2accesstoken.{policyName}.{custom_attribute_name}
架构
每种政策类型均由 XML 架构 (.xsd
) 定义。GitHub 提供了政策架构作为参考。
错误参考信息
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
steps.oauth.v2.access_token_expired |
500 | The access token sent to the policy is expired. |
steps.oauth.v2.invalid_access_token |
500 | The access token sent to the policy is invalid. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | Please see this Apigee Community post for information about troubleshooting this error. |
Deployment errors
Refer to the message reported in the UI for information about deployment errors.
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.SetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.SetTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.SetTokenInfo.cause = Invalid Access Token |
Example error response
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
Example fault rule
<FaultRule name=SetOAuthV2Info Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>