首页 文章

如何确定用于访问令牌的授权类型[关闭]

提问于
浏览
6

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

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

Edit and Solution

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

1 回答

  • -1

    除非你write your own codeIDN_OAUTH2_ACCESS_TOKEN 表中获取此信息,否则我不能直接这样做 .

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

    例如,

    1)如果您已经知道应用程序创建者的名称(或用户域域),您可以获取this blog post中提到的令牌所有者,并在应用程序所有者调用带有API OICD令牌时将其与应用程序所有者进行比较's name. The owner of the tokens which are generated by client-credentials grant type is always the same as the application owner. However this methods has a limitation that you can't differenciate和客户端凭据授予类型 .

    2)启用JWT tokens,然后根据用户声明做出决定 .

相关问题