首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不使用用户密码的Spring安全自定义验证

不使用用户密码的Spring安全自定义验证
EN

Stack Overflow用户
提问于 2017-07-19 16:56:17
回答 2查看 1.4K关注 0票数 0

我想知道在Security中是否有可能锁定rest的所有端点,并通过在不使用用户名和密码的情况下进行自定义验证来进行登录。

这就像创建一个自定义验证方法,它接收令牌而不是用户/传递。然后,该方法将使用已经验证调用方的第三方验证令牌。

对于OAuth2来说,这听起来很熟悉,因为后端API需要在春季前实现安全,同时它不是OAuth2客户机:

  1. 我们正在构建一个登录功能。
  2. 我们有一个客户端(移动应用程序)、后端(REST类似于终结点Spring )和一个用于OAuth2/OpenIdConnect流的AuthProvider。
  3. OAuth/OpenIDConnect流只发生在移动设备和OpenIDProvider之间。(从移动到后端进行初始呼叫,为oauth流提供一些详细信息)
  4. 一旦授权成功,移动应用程序就会接收到一个auth_code,只有这样,应用程序才会将后端调用为"Login“,这意味着验证auth_code、交换access_token和创建用户会话。(我们需要一次会议)。
  5. 正如您所看到的,后端类的“登录”只需要接收auth_code,并在创建会话之前使用AuthProvider对其进行验证。

非常感谢!

如有任何评论或参考,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-19 22:15:47

Security通过查看SecurityContext中的SecurityContextHolder来确定用户是否经过身份验证。这意味着您可以使用以下方法验证用户的身份:

代码语言:javascript
代码运行次数:0
运行
复制
boolean userIsAuthenticated = ...
if(userIsAuthenticated) {
    Authentication request = new UsernamePasswordAuthenticationToken(name, password);
    Authentication result = ...
    SecurityContext context = SecurityContextHolder.createEmptyContext();
    context.setAuthentication(result);
    SecurityContextHolder.setContext(context);
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-19 18:30:21

Security是一个非常灵活的框架,它发布各种接口,允许用户根据需要定制行为。

我推荐以下资源来学习如何做到这一点:

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

https://stackoverflow.com/questions/45196658

复制
相关文章

相似问题

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