Oauth 2.0 获取具有授权代码流的有效刷新令牌的新令牌时出错

Oauth 2.0 获取具有授权代码流的有效刷新令牌的新令牌时出错,oauth-2.0,wso2is,wso2-am,refresh-token,Oauth 2.0,Wso2is,Wso2 Am,Refresh Token,我正在使用WSO2 API manager 1.10.0,其中WSO2 Identity Server 5.1.0配置为密钥管理器,MySQL社区服务器5.6配置为数据库。当我尝试刷新使用授权代码授权类型获得的令牌(refresh_token grant type)时,我收到一个400错误请求错误(无效的\u授权-提供的授权授权授权无效),并且我无法获取新令牌。然后,我尝试使用client_凭据和密码授予类型,对于这些类型,我能够刷新令牌 我检查了Identity Server日志,发现Iden

我正在使用WSO2 API manager 1.10.0,其中WSO2 Identity Server 5.1.0配置为密钥管理器,MySQL社区服务器5.6配置为数据库。当我尝试刷新使用授权代码授权类型获得的令牌(refresh_token grant type)时,我收到一个400错误请求错误(无效的\u授权-提供的授权授权授权无效),并且我无法获取新令牌。然后,我尝试使用client_凭据和密码授予类型,对于这些类型,我能够刷新令牌

我检查了Identity Server日志,发现Identity Server尝试检索最新令牌时出错(下面的日志)

我调试了,我认为问题可能与下面的SQL查询有关,特别是与USER_DOMAIN=null子句有关

SELECT ACCESS_TOKEN, REFRESH_TOKEN, TIME_CREATED, REFRESH_TOKEN_TIME_CREATED, VALIDITY_PERIOD, REFRESH_TOKEN_VALIDITY_PERIOD, TOKEN_STATE, USER_TYPE, TOKEN_ID, SUBJECT_IDENTIFIER FROM IDN_OAUTH2_ACCESS_TOKEN WHERE CONSUMER_KEY_ID = (SELECT ID FROM IDN_OAUTH_CONSUMER_APPS WHERE CONSUMER_KEY = 'OQU0_FyRQcdvTFbygziFw67ASHwa') AND AUTHZ_USER='michael.pinheiro' AND TENANT_ID=-1234 AND USER_DOMAIN=null AND TOKEN_SCOPE_HASH='369db21a386ae433e65c0ff34d35708d' ORDER BY TIME_CREATED DESC LIMIT 1
我还注意到,在使用授权码授权类型时,表IDN_OAUTH2_access_token中创建的访问令牌的用户域列设置为NULL,但在使用密码或客户端凭据授权类型时,值为“PRIMARY”

这可能是一个bug,还是我在创建新的访问令牌时丢失了任何可能以某种方式将用户域设置为主域的参数

我写下我为重现问题而执行的所有步骤:

第1步: 我通过重定向到profile&redirect\u uri获取授权代码=

第二步: 使用上一步中接收到的代码,我通过执行以下命令获取访问令牌(和刷新令牌):

curl-X POST-H“内容类型:application/X-www-form-urlencoded”-d'grant\u Type=authorization\u code&client\u id=OQU0\FyRQcdvTFbygziFw67ASHwa&client\u secret=3kc6uf9f8hl8hvl2n03dhqc57jsa&scope=openid profile&code=fd2f827afefba0ab0b17f9d701ad1488&redirect\u uri=”“

第三步: 在上一步中使用接收到的刷新令牌,我执行以下请求以获取新令牌,但是我收到了400个错误请求,如本文所述

curl-X POST-H“授权:基本T1FVMF9GEVJRY2R2VEZIEWD6AUZ3NJDBU0H3YTOZA0M2VWY5ZJHMCHIVMWYBJAZGHRYZU3SNNH”-H“内容类型:应用程序/X-www-form-urlencoded”-H“接受:应用程序/json”-d“授权类型=刷新”\u令牌&范围=openid配置文件和刷新\u令牌=7A7DA99D40D48E10AC82E3681C63B0A1”


欢迎任何帮助

此问题已在[1]中报告,并在以后的版本中修复。请参阅jira链接中的修复。您可以尝试使用配置为密钥管理器的IS 5.2.0的APIM 2.0.0

[1]

SELECT ACCESS_TOKEN, REFRESH_TOKEN, TIME_CREATED, REFRESH_TOKEN_TIME_CREATED, VALIDITY_PERIOD, REFRESH_TOKEN_VALIDITY_PERIOD, TOKEN_STATE, USER_TYPE, TOKEN_ID, SUBJECT_IDENTIFIER FROM IDN_OAUTH2_ACCESS_TOKEN WHERE CONSUMER_KEY_ID = (SELECT ID FROM IDN_OAUTH_CONSUMER_APPS WHERE CONSUMER_KEY = 'OQU0_FyRQcdvTFbygziFw67ASHwa') AND AUTHZ_USER='michael.pinheiro' AND TENANT_ID=-1234 AND USER_DOMAIN=null AND TOKEN_SCOPE_HASH='369db21a386ae433e65c0ff34d35708d' ORDER BY TIME_CREATED DESC LIMIT 1