如何通过REST API刷新WSO2AM 2.1.0的应用订阅accessToken?
刷新WSO2 AM 2.1.0应用订阅访问令牌的可行方案
首先得明确:你提到的keys[0].token.accessToken是应用专属的访问令牌——用来调用该应用所订阅的后端API,和你用来调用Store API的那个管理员Bearer令牌完全是两回事。你之前看的Token API其实也能用来刷新这个应用令牌,只是调用方式不一样,下面给你两种可行的实现方法:
方法一:用Refresh Token刷新(推荐,若已获取Refresh Token)
如果在最初生成这个应用令牌时,你请求了offline_access scope并拿到了Refresh Token,就可以用它来刷新令牌,避免重复使用Client Credentials:
- 构造POST请求到WSO2的OAuth2 Token端点:
POST https://localhost:9443/oauth2/token Content-Type: application/x-www-form-urlencoded Authorization: Basic <Base64编码的[consumerKey]:[consumerSecret]> grant_type=refresh_token&refresh_token=<你的应用Refresh Token>&scope=am_application_scope default
- 注意:
Authorization头里的内容是把应用的consumerKey和consumerSecret用冒号拼接后做Base64编码的结果。 - 这个请求会返回新的
access_token,同时可能会返回新的refresh_token(取决于WSO2的配置)。
方法二:用Client Credentials Grant重新获取令牌
如果没有Refresh Token,或者Refresh Token已过期,直接用应用的Consumer Key/Secret重新获取新的访问令牌就可以:
- 构造POST请求:
POST https://localhost:9443/oauth2/token Content-Type: application/x-www-form-urlencoded Authorization: Basic <Base64编码的[consumerKey]:[consumerSecret]> grant_type=client_credentials&scope=am_application_scope default
- 这个请求会直接返回新的
access_token,有效期和你之前看到的validityTime一致(默认3600秒),可以直接替换原来的令牌使用。
额外说明
- 你通过Store API拿到的那个令牌是应用首次生成密钥时自动创建的一次性令牌,后续刷新/重新获取都需要走上面的OAuth2流程,Store API不会再返回新的令牌。
- 如果需要支持Refresh Token,在创建应用密钥时要确保
supportedGrantTypes包含refresh_token,并且首次请求令牌时带上offline_accessscope。
内容的提问来源于stack exchange,提问作者novalagung
相关产品推荐
相关产品推荐

