WSO2-AM 3.2.0 - OAuth 令牌 - 哈希类型

WSO2-AM 3.2.0 - OAuth token - Hash type

我正在向 WSO2-AM 请求获取 OAuth 令牌以访问代表用户在 API 管理器中发布的 api。一切都在使用 access_token 中返回的大字符串,但我想使用可能已编码的短版本。

要求:

curl -X POST -H 'Content-Type:application/x-www-form-urlencoded' -u
 <consumer-key>:<consumer-secret> -k -d 
'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<id_token>'
 https://<apim>:8243/token

回复:

{"access_token":"eyJ4NXQiOiJNell4TW1Ga09HWXdNV0kwWldObU5EY3hOR1l3WW1NNFpUQTNNV0kyTkRBe
lpHUXpOR00wWkdSbE5qSmtPREZrWkRSaU9URmtNV0ZoTXpVMlpHVmxOZyIsImtpZCI6Ik16WXhNbUZrT0dZd01XSTBaV05
tTkRjeE5HWXd....bZ-CD_r-2qkypeER7f8QMrLpozRipgHeCkpIKXx5PzSM6zBq5VjMW4EXSRg7LSu0JAJfD2UD6H4bqAiZPNiGy9vTLXc
Zr4g8WNzfKkr...
-hiAOt4SauSZxB1WWCFEZ0xyHVhbx7nAFzBVzfssF0DOYGXkc9hRJZGbG8VfiXb6PWtSfEjqJTSSY_aZWXw",
"refresh_token":"d3062fa0-1132-3532-b1b2-83c3c66136ff","token_type":"Bearer","expires_in":3600}

预计:

{"access_token":"400f2a54-53d8-3146-88e3-be1bf5e7450d",
"refresh_token":"c2656286-449f-369f-9793 2cee9132de9f",
"scope":"default","token_type":"Bearer","expires_in":3600}

我做错了什么没有返回短的?

我假设,您 access_token 期望的是 不透明(参考)访问令牌,在此 WSO2 API Manager 3.1.0 中有描述文档:Secure APIs using OAuth2 Opaque(Reference) Access Tokens。 但是,根据 Release notes,从 WSO2 API 管理器 3.2.0,他们删除了这种类型的访问令牌:

Out-of-the-box support to generate an opaque access token via the Developer Portal has been removed. Application Developers can create applications that only generate a JWT type access tokens.

所以,大字符串,你得到的仅此而已,就像这个 JWT 令牌,在文档中有描述:JWT (Self Contained) Access Tokens, which you can decode on jwt.io 站点。

您可以从 https://jwt.io/ 解码您的长 JWT 并将其 JTI 值作为短 JWT 值,它看起来类似于 400f2a54-53d8-3146-88e3-be1bf5e7450d。

参考下面的例子。

.

正如您所指的短令牌。它是不透明的令牌,APIM 3.2.0 在您创建应用程序时不会显示它。可以通过WSO2 carbon管理控制台获取默认的Token(不透明)

在您需要使用的特定应用程序的 ISP 列表中将令牌颁发者从 JWT 更改为默认值。 enter image description here

我在 APIM 4.0.0 中生成不透明(短)令牌的地方 enter image description here