使用基于OAuth2 Server Example的OAuth2服务器 服务器围绕令牌吊销的行为似乎很奇怪。如果客户端撤消刷新令牌,然后使用该撤消的刷新令牌请求新的访问令牌,则服务器会授予它。这似乎破坏了撤销的目的。
撤销刷新令牌:
$ curl -u ikznOK52eGBSXFYg0KAlh2jp:aeB5VS3epdj1Ij53eBg2K43MlYJ5OIAEXm3SZE6NuUbfnLIq -XPOST http://localhost:5000/oauth/revoke -F token=CQhaP6sD7076J8tZfCHt8k3tK3dhIPYIV1lfNLopLBeVaY40
响应为:{}
,并且sqlite的oauth2_token表中的记录显示已撤销的列为'1'
SQL查询:
Select revoked from oauth2_token Where refresh_token="CQhaP6sD7076J8tZfCHt8k3tK3dhIPYIV1lfNLopLBeVaY40"
查询结果为:
1
尝试使用已经重新命名的刷新令牌来请求新令牌
curl -u ikznOK52eGBSXFYg0KAlh2jp:aeB5VS3epdj1Ij53eBg2K43MlYJ5OIAEXm3SZE6NuUbfnLIq -XPOST http://localhost:5000/oauth/token -F grant_type=refresh_token -F refresh_token=CQhaP6sD7076J8tZfCHt8k3tK3dhIPYIV1lfNLopLBeVaY40
响应为
{"access_token": "dboAGQshcBabK3RxTkvfKAlhVPPtBDWN1hn8zapHfz", "expires_in": 864000, "refresh_token": "bhHM4Znw8m7mtWLLcDefQR6bA6Zbl2eSaLfzWvnGhfvwIFYU", "scope": "profile", "token_type": "Bearer"}