You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WSO2 API Manager中区分获取可用访问令牌与刷新令牌?

WSO2 API Manager中区分获取可用令牌与刷新令牌的操作方法

一、不同授权类型的操作区分

1. Password/Refresh Token授权类型

  • 生成新令牌(旧令牌立即失效):直接调用/oauth2/token接口,传入grant_type=password,附带用户名、密码、客户端ID和密钥。这是WSO2默认的单会话逻辑,每次调用都会生成全新令牌,旧令牌直接作废。
  • 刷新令牌(获取新令牌,旧令牌可按需保留有效性):使用grant_type=refresh_token调用接口,传入有效的refresh_token、客户端ID和密钥。默认生成新access_token后旧令牌会失效,但可以通过配置调整,让旧令牌在自身有效期内继续可用。

2. Client Credentials授权类型

  • 生成新令牌:调用/oauth2/token接口,传入grant_type=client_credentials,每次调用都会生成新令牌,旧令牌直接失效。
  • 复用已有令牌:这种授权类型没有refresh_token,需要在客户端层面缓存未过期的access_token,只有当令牌过期后再重新调用接口获取新令牌。

3. JWT/SAML2授权类型

  • 生成新令牌:分别使用grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer或grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer调用接口,每次调用都会生成新令牌,旧令牌失效。
  • 复用已有令牌:同样需要客户端自行缓存未过期的令牌,待令牌过期后再重新发起获取请求。

二、调整WSO2的令牌复用行为

如果希望用refresh_token刷新令牌时,旧access_token在有效期内仍能使用,可修改deployment.toml配置:

[oauth.token_validation]
enable_token_reuse = true

开启该配置后,用refresh_token获取新令牌时,旧令牌不会立即失效,直到自身过期;但password模式重复获取时还是会生成新令牌并作废旧令牌,因为这属于新的登录会话。

三、客户端最佳实践

  • 无论哪种授权类型,客户端都要缓存已获取的access_token,每次调用API前先解析令牌的exp字段判断是否过期。
  • 只有当令牌过期或者验证失败时,再按授权类型选择对应方式获取新令牌:
    • 有refresh_token的类型:优先使用refresh_token模式刷新令牌。
    • 无refresh_token的类型:重新调用对应grant_type的接口生成新令牌。

内容的提问来源于stack exchange,提问作者Ehsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:45:41