我在我的一个项目中使用Oauth2+JWT+Spring安全性。当我使用用户名/密码访问/茅斯/令牌时,我将在响应中接收访问令牌,其他详细信息如下
{
"access_token": <token>,
"token_type": <type>,
"refresh_token": <refresh-token>,
"expires_in":<secs>,
"scope": <scope>,
"jti": <value>
}是否可以自定义此响应,如
{
data: {
"access_token": <token>,
"token_type": <type>,
"refresh_token": <refresh-token>,
"expires_in":<secs>,
"scope": <scope>,
"jti": <value>
},
details:{
//extra information
}
}发布于 2022-12-02 00:39:38
我很困惑,不知道如何更清楚地问:“您想发送的附加数据是什么?”给出一个明确的样本。
我将回答猜测,这些数据与授权实体(在授权代码流中回答时的用户和客户端凭据流中的客户端)有关:非标准数据应该设置为私有的-claims,在JWT本身和令牌内省端点上。
如何添加这样的私有声明取决于您的授权服务器。对于春季安全机制,这是通过OAuth2TokenCustomizer完成的。对于Keycloak,您必须提供一个“映射器”,等等。
收到像您显示的有效负载的客户端,只在向资源服务器发出请求时才发送访问令牌。重要的是,此令牌保存资源访问决策所需的所有数据。有些声明是由OAuth2指定的,OpenID定义了一些更标准的声明,您可以在私有索赔中放置任何附加数据(在最大令牌大小的范围内)。
另外,如果客户端需要读取声明,它应该使用ID令牌,而不是访问令牌(在启动openid流时请求OAuth2范围)。访问令牌只应由资源服务器解释.
https://stackoverflow.com/questions/74625632
复制相似问题