我在WSO2 API Manager中配置了一个API,允许多种不同的OAuth 2.0授权类型(客户端凭据和openid)。
我的API需要不同的行为,具体取决于它是通过客户端凭据生成的access_token还是openid来调用的。 API如何验证提供的访问令牌是通过客户端凭据还是openid生成的?
编辑和解决方案:
我找到了一种方法。以下WSO2 Documentation显示了如何配置API Manager以传递包含某些特定于令牌的信息的JWT。在该令牌中,您将找到" http://wso2.org/claims/usertype"要求。如果您的api是通过客户端凭证授予类型访问的,那么如果通过openid或SAML访问它,它的值将是APPLICATION,它将是APPLICATION_USER。我还没有找到专门概述这种情况的文档,但似乎有效。
答案 0 :(得分:-1)
除非你write your own code从IDN_OAUTH2_ACCESS_TOKEN
表中获取此信息,否则我认为没有直接的方法。
但是使用一些hacky方式你应该能够毫不费力地做到这一点。
例如,
1)如果您已经知道应用程序创建者的名称(或用户领域),您可以获得this blog post中提到的令牌所有者,并将其与应用程序所有者的名称进行比较。由客户端凭据授予类型生成的令牌所有者始终与应用程序所有者相同。但是,此方法存在一个限制,即当应用程序所有者调用with API OICD令牌和客户端凭据授予类型时,您无法区分。
2)启用JWT tokens,然后根据用户声明做出决定。