微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WSO2:无法使用 scope=apim:subscribe 生成 access_token

如何解决WSO2:无法使用 scope=apim:subscribe 生成 access_token

我使用的是 WSO2 Identity Server-5.10.0 和 API Manager-3.2.0。

已在 devportal 中创建应用程序并将 API 订阅到此应用程序。 在身份服务器中为此服务提供者启用了基于角色的范围验证器。 使用以下 API 生成令牌: https://IS_host/oauth2/token 启用基于角色的范围验证器后,无法使用 scope=apim:subscribe 生成令牌并给出错误无效范围。 用户被分配了角色 -Internal/Subscriber

我们正在 Devportal 中创建应用程序并为该应用程序订阅 API。

我们想列出与订阅特定应用程序的 API 关联的范围。因此我们调用下面的 API 来列出基于 applicationId
的范围 https://AM_HOST/api/am/store/v1/applications/{applicationId}

调用这个 API,我们需要生成一个 Token 和 scope:apim:subscribe,但是在启用基于 Role 的作用域验证器后,我们无法用 apim:subscribe 生成令牌。

如果我们禁用基于角色的范围验证器,用户将能够为所有范围生成令牌,而不管与用户关联的角色。

解决方法

apim:subscribe 范围是 API Manager REST API 的保留范围。因此,不需要从 Devportal 创建应用程序来生成令牌。您可以直接对 API 管理器执行 DCR 操作以注册客户端并生成具有 API-M 保留范围的访问令牌。

此外,我相信您已经按照 IS-Connector 方法将 IS 配置为密钥管理器。 Role Based Scope validator 功能需要在服务器之间共享一组 DB。

因此,生成 API-M 特定范围令牌的最佳方法如下

  • 对 API Manager 实例(而非 IS)执行 DCR 操作
  • 这会使用 API 管理器的常驻密钥管理器在 API 管理器中创建一个客户端,并使用消费者凭据(客户端 ID 和机密)进行响应
  • 执行密码授权以使用收到的消费者凭据生成令牌

您可以在 Devportal REST API Docs

中了解有关执行 DCR 和后续调用的更多信息

希望这有助于您克服所报告的行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。