首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Security/OAuth如何计算出AuthenticationPrincipal

Security/OAuth如何计算出AuthenticationPrincipal
EN

Stack Overflow用户
提问于 2015-07-30 20:05:28
回答 1查看 836关注 0票数 1

我有一个spring项目,它使用spring-oauth2和spring安全性来使用LDAP auth提供程序进行身份验证。

在控制器中,我可以使用UserDetails注释访问当前主体的@AuthenticationPrincipal

但是,当我使用client_credential令牌访问端点时,@AuthenticationPrincipal是一个String,它是OAuth客户端id。我知道当您使用client_credentials进行身份验证时,没有用户的概念,但是我希望让我的主体成为一个更丰富的数据类型。spring是如何决定将我的主体设置为String的,我可以重写该行为吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 07:01:43

来自Oauth2规范

当授权范围受限于客户端控制下的受保护资源或先前与授权服务器一起安排的受保护资源时,客户端凭据(或其他形式的客户端身份验证)可用作授权授予。客户端凭据通常用于授权授予,通常是当客户端代表自己(客户端也是资源所有者)或根据先前与授权服务器安排的授权请求对受保护资源的访问时。

因为客户端也可以是资源所有者,因此spring将根据客户端信息创建身份验证。

我假设您已经安装了org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter,用于为客户端创建身份验证。

您可以创建自己的自定义org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService或创建自己的org.springframework.security.authentication.AuthenticationProvider来覆盖身份验证对象的创建方式,但我更喜欢使用org.springframework.security.oauth2.provider.token.TokenEnhancer向生成的令牌添加其他信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31733039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档