如何确定用于访问令牌的授权类型

Nik*_*ric 6 wso2 oauth-2.0 wso2-api-manager

我在WSO2 API Manager中配置了一个API,允许多种不同的OAuth 2.0授权类型(客户端凭据和openid).

我的API需要不同的行为,具体取决于它是通过客户端凭据生成的access_token还是openid来调用的.API如何验证提供的访问令牌是通过客户端凭据还是openid生成的?

编辑和解决方案:

我找到了一种方法来做到这一点.以下WSO2文档显示了如何配置API Manager以传递包含某些特定于令牌的信息的JWT.在该令牌中,您将找到" http://wso2.org/claims/usertype "声明.如果您的api是通过客户端凭证授予类型访问的,那么如果通过openid或SAML访问它,它的值将是APPLICATION,它将是APPLICATION_USER.我没有找到专门概述这种情况的文档,但似乎有效.

Bee*_*Bee -1

我认为没有直接的方法可以做到这一点,除非您编写自己的代码来从表中获取此信息IDN_OAUTH2_ACCESS_TOKEN

但是使用一些hacky方法你应该能够毫不费力地做到这一点。

例如,

1) 如果您已经知道应用程序创建者的名称(或用户存储域),您可以获取本博客文章中提到的令牌所有者,并将其与应用程序所有者的名称进行比较。由客户端凭证授予类型生成的令牌的所有者始终与应用程序所有者相同。但是,此方法有一个限制,即当应用程序所有者使用 API OICD 令牌和客户端凭据授予类型调用时,您无法区分。

2) 启用JWT 令牌,然后根据用户声明做出决定。