Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于带有登录系统的web应用程序,我是否需要OAuth服务器实现?_Java_Spring_Rest_Spring Security_Oauth - Fatal编程技术网

Java 对于带有登录系统的web应用程序,我是否需要OAuth服务器实现?

Java 对于带有登录系统的web应用程序,我是否需要OAuth服务器实现?,java,spring,rest,spring-security,oauth,Java,Spring,Rest,Spring Security,Oauth,如果我正在创建一个带有RESTful后端的web应用程序,那么考虑到我不想连接社交媒体(Facebook、Google+等),OAuth 2.0真的有必要吗?我正在考虑放弃OAuth2.0并执行以下操作: 成功登录后生成JWT令牌 将此令牌存储在redis(或数据库,尚未决定) 有一个过滤器,用于检查JWT令牌,并将该令牌与redis/db中的令牌相匹配 如果令牌存在,请允许用户访问资源 如果愿意,您可以手动生成JWT令牌,但最好让oAuth 2.0实现处理JWT生成 您不需要保留令牌。只需检

如果我正在创建一个带有RESTful后端的web应用程序,那么考虑到我不想连接社交媒体(Facebook、Google+等),OAuth 2.0真的有必要吗?我正在考虑放弃OAuth2.0并执行以下操作:

  • 成功登录后生成JWT令牌
  • 将此令牌存储在redis(或数据库,尚未决定)
  • 有一个过滤器,用于检查JWT令牌,并将该令牌与redis/db中的令牌相匹配
  • 如果令牌存在,请允许用户访问资源

如果愿意,您可以手动生成JWT令牌,但最好让oAuth 2.0实现处理JWT生成


您不需要保留令牌。只需检查JWT的签名,就不需要检查数据库,因为JWT的点用于无状态身份验证。

OAuth 2.0 3 legged flow主要用于寻址第三方应用程序,以获得资源所有者访问权限,而无需与第三方应用程序共享资源所有者的凭据。例如,照片打印应用程序希望代表资源所有者访问资源所有者(用户)的闪烁帐户,而不共享资源所有者闪烁帐户凭据

在传统的客户端-服务器身份验证中,您可以考虑使用OAuth- 2 2条腿资源所有者授权,其中OAuth2客户端应用程序可以请求OAuth2服务器创建OAuthAccess令牌。在这种情况下,您可以将JWT令牌用于OAuth访问令牌。这个流程与您提到的差不多,但只是标准的OAuth 2.0资源所有者请求和响应。请参阅上的资源所有者请求和响应详细信息。如果您使用标准的双腿OAuth流,那么客户机和服务器集成将变得简单且可互操作

如果不想支持终止(撤销)令牌操作,则不需要将令牌存储在数据库或任何其他位置。在这种情况下,令牌可以自过期,但不能终止。
即使您需要终止令牌,也不要存储整个令牌,只存储令牌uuid(随机id)并在JWT令牌声明之一中设置令牌uuid

所以我仍然应该实现我自己的OAuth2服务器,但是使用JWT令牌?您建议将令牌保存在内存中以进行身份验证吗?如果我没有以某种方式将令牌存储在服务器上(内存、缓存或数据库中),那么我如何知道哪个用户拥有哪个令牌?这意味着用户A可以访问用户B的数据?@JakeMiller如果你找不到一个已经实现的OAuth2库,你可以避免它,只需要发布你自己的JWTs。通过将用户名添加到JSON,您可以知道谁拥有已颁发的令牌。您将知道用户没有撒谎,因为签名是由您签名的。您可以使用这样的服务,它将充当身份验证服务器,并向您返回JWT。JWT的美妙之处在于,您可以直接使用它们,并使用
.sub
声明映射到用户。然后您可以选择进行社交注册(Auth0将在几分钟内为您处理整个过程,帮助您部署)(披露:我为Auth0工作)