Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 使用SpringSecurity';自定义端点上的OAuth2按需功能_Java_Spring Boot_Spring Security_Oauth 2.0 - Fatal编程技术网

Java 使用SpringSecurity';自定义端点上的OAuth2按需功能

Java 使用SpringSecurity';自定义端点上的OAuth2按需功能,java,spring-boot,spring-security,oauth-2.0,Java,Spring Boot,Spring Security,Oauth 2.0,我们有一个springbootweb应用程序,它使用基于JWT的身份验证/授权。 现在,我们想添加OAuth2支持,以便用户可以使用他们的Google帐户登录。 使用Spring-Security很容易做到这一点 但是,要求有点不同 如果用户想要使用谷歌登录功能,他首先需要链接他们的谷歌账户。基本上是使用他/她的凭据登录到我们的应用程序,并在他们的个人资料页面上链接他们的Google帐户 流程如下所示: 点击用户档案上的“链接谷歌账户”按钮,将他们重定向到谷歌 在谷歌中选择你想要的账户 谷歌带着

我们有一个
springboot
web应用程序,它使用基于JWT的身份验证/授权。 现在,我们想添加OAuth2支持,以便用户可以使用他们的Google帐户登录。 使用
Spring-Security
很容易做到这一点

但是,要求有点不同

如果用户想要使用谷歌登录功能,他首先需要链接他们的谷歌账户。基本上是使用他/她的凭据登录到我们的应用程序,并在他们的个人资料页面上链接他们的Google帐户

流程如下所示:

  • 点击用户档案上的“链接谷歌账户”按钮,将他们重定向到谷歌
  • 在谷歌中选择你想要的账户
  • 谷歌带着代码返回。之后,在经过身份验证的端点上向我们的后端发出请求,例如,
    POST/users/{userId}/accounts
    ,它将接收谷歌返回的令牌
  • 在后端,通过向Google发出请求来验证此令牌
  • 如果一切正常,则通过相应地更新数据库,将用户帐户与谷歌链接
  • 我的问题是,对于第4步,最佳做法是什么?如何使用
    Spring Security
    提供的所有功能来实现这一点


    提前感谢您,

    您有授权码,您可以通过https和后端交换访问令牌

    在您的终端不需要验证访问令牌(我认为SpringSecurity甚至不需要验证与google集成的这一部分)


    这应该由谷歌在您请求其资源时完成。

    您拥有授权码,并通过https和后端交换访问令牌。所以我不明白为什么我们需要第4步。我理解用例,这是一个非常常见的用例。您能分享一下您的尝试吗?也许我们可以帮您解决这些差距?@s7vr根据OAuth2授权流规范,访问令牌的交换应该在后端完成,因为在前端这样做是不安全的。@MarcosBarbero我尝试使用类似于本文所描述的东西:不幸的是,它没有像我预期的那样工作。我原以为SpringSecurity会公开某种服务来为您做这件事,因为我猜框架本身已经在做这件事了。但不幸的是我什么也找不到。