spring - 使用 spring security 和 mongodb 进行 Rest 身份验证

标签 spring mongodb spring-security spring-security-oauth2 spring-security-rest

我已经使用 mongodb 实现了 Spring 应用程序,现在我已经实现了 Rest authentication with Spring security and Mongodb ,现在我必须添加 Authorization header ,如果 Authorization 没问题,它只显示 api 调用的数据,从现在开始没问题,但我想知道如何获得这个值?我的意思是我想登录该应用程序,我应该获得此授权吗?如果不是,登录响应应该返回此授权以在下次调用中使用它? 我还读过关于oauth2aws token,但我真的想知道这个过程,我的意思是,普通用户可以登录应用程序的流程是什么然后在授权的情况下调用电话?

我的平台是:

数据库——MongoDB

服务器——Spring

网络——角度

应用程序——Android

这是一个测验游戏的项目,可以支持多游戏选项(超过 1 名玩家同时玩)

所以我需要了解的是从APP/WEB我必须调用一个电话,比如说api/v1/login,然后发送用户和密码,好吧,我必须创建bcrypted和salt内容的部分在哪里将其存储到数据库中?我是否必须在应用程序上执行此操作,然后在登录调用中通过 JSON 发送 SHA 内容,或者最好将密码发送到服务器,以便服务器执行所有操作并将这些内容存储在数据库上?

最佳答案

在您描述的场景中,使用 OpenID Connect 或 OAuth2 都是没有意义的。有一个服务器用于身份验证和资源。场景大概是这样的:

  1. 客户端(Angular 或应用)通过安全的 HTTP 连接以纯文本形式将凭据发送到服务器以进行登录
  2. 服务器响应访问刷新 token
  3. 两个 token 都需要保存在客户端设备上(例如本地存储)
  4. 您将访问 token 与每个需要身份验证的请求一起发送
  5. 访问 token 过期之前,您可以触发特定的 REST 调用,以使用您的刷新 token 刷新 token
  6. 服务器发回新的访问和新的刷新 token 。存储它们并删除旧的。

使用SpringBoot你几乎可以免费获得这一切。除非您没有具体的示例,否则我不会提供代码片段。您会在 auth0 site 上找到精彩而简洁的示例。 .

查找here有关如何随请求一起发送访问 token 的 Angular 教程

关于您的数据库问题,一个简单但有效的方案可能是将加密密码与您的用户一起存储(在数据库中)。如果用户登录,他会向您发送需要加密的纯文本密码,并将其与您存储的密码进行比较。切勿存储纯文本密码,仅将其用于登录过程。有几个best practices您可能需要考虑在 Java 应用程序中使用密码。

关于spring - 使用 spring security 和 mongodb 进行 Rest 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012573/

相关文章:

spring-security - Spring Security Apple 登录

java - Spring中注销失败如何处理?

java - Spring 集成 SFTP - 传输后处理

java - Spring 4 中的自定义属性编辑器

javascript - 如何将数据库嵌入到我的 vuejs 应用程序中?

mysql - 创建用于组合的 mongodb 容器时出错

spring security + oauth2 + Reactjs + Restful http 客户端

javax.validation 验证值列表?

spring - Servlet 和过滤器注册为 Spring Beans 而不是 Grails 中的 web.xml

Java 驱动程序在cursor.hasNext() 上抛出空指针