Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 Spring Boot Auth server中的多个SSO提供程序_Java_Spring Boot_Oauth 2.0_Spring Security Oauth2 - Fatal编程技术网

Java Spring Boot Auth server中的多个SSO提供程序

Java Spring Boot Auth server中的多个SSO提供程序,java,spring-boot,oauth-2.0,spring-security-oauth2,Java,Spring Boot,Oauth 2.0,Spring Security Oauth2,从Spring开始,我已经阅读并实现了我自己的Auth服务器。有多个SSO提供商—Facebook、Github和一个自定义身份验证服务器。在本教程中,身份验证服务器包含对其他SSO提供程序的处理 我有一个单独的资源服务器,它使用以下属性链接到我的身份验证服务器: security.oauth2.resource.userInfoUri=http://localhost:9000/user 我可以使用cUrl命令从身份验证服务器获取令牌: curl acme:acmesecret@localh

从Spring开始,我已经阅读并实现了我自己的Auth服务器。有多个SSO提供商—Facebook、Github和一个自定义身份验证服务器。在本教程中,身份验证服务器包含对其他SSO提供程序的处理

我有一个单独的资源服务器,它使用以下属性链接到我的身份验证服务器:

security.oauth2.resource.userInfoUri=http://localhost:9000/user
我可以使用cUrl命令从身份验证服务器获取令牌:

curl acme:acmesecret@localhost:9000/oauth/token -d grant_type=password -d username=user -d password=...
{"access_token":"aa49e025-c4fe-4892-86af-15af2e6b72a2","token_type":"bearer","refresh_token":"97a9f978-7aad-4af7-9329-78ff2ce9962d","expires_in":43199,"scope":"read write"}
但我不明白的是,如何使用其他SSO提供程序也从auth服务器获取此类令牌?资源服务器不应该关心我是如何获得令牌的,以及我是使用Facebook还是自定义身份验证服务器进行身份验证的。它应该简单地询问身份验证服务器什么是主体(登录用户),然后决定向他显示哪些资源,对吗


我没有任何UI,这将为移动应用程序提供支持,因此我需要了解如何使用REST请求处理身份验证。

如果我正确理解您的问题

我如何使用其他SSO提供程序也从中获取此类令牌 身份验证服务器

这个自定义身份验证服务器正在抽象出您与FB或Github的交互,并向您发布它自己的令牌。自定义身份验证服务器吐出的令牌不是FB或Github令牌,而是由自定义身份验证服务器生成的令牌(使用FB/Github令牌进行身份验证后)

那为什么我们需要FB/github呢

除此之外,您的自定义身份验证服务器可以识别一个人,它肯定可以使用用户Id和密码;考虑“用FB登录”作为它给用户的另一个好选项。

除了FB和github之外,如何添加其他SSO提供商,如digitalocean

只需执行与FB和Github相同的操作(向digital ocean注册客户端id,然后在auth server应用程序中,在properties/yaml文件中添加客户端id和密码等)

资源服务器不应该关心我如何获得令牌和 我是否使用Facebook或我的自定义身份验证服务器进行身份验证。信息技术 只需询问身份验证服务器主体(登录用户)是什么 然后决定给他看哪些资源,对吗

是的,你的理解是正确的

编辑(回答评论中提出的问题) 但假设我通过我的身份验证服务器登录Facebook。我在哪里 找到可用于资源服务器的令牌吗?假设我 拥有一个RestClient并希望发出请求以获取某些资源 属于通过Facebook身份验证过程的用户 我的身份验证服务器。在哪里可以找到要使用的令牌


如果这是一个要求,我想你可以用这个代替;您可能不需要自定义身份验证服务器。拥有自定义身份验证服务器的关键是抽象出与FB或github的交互


如果您仍然希望使用自定义身份验证服务器方向,请从身份验证服务器公开一个端点(这将从FB获得您需要的资源),然后从您的资源服务器使用该端点。

谢谢。我想我理解这些观点。但假设我通过我的身份验证服务器登录Facebook。在哪里可以找到可用于资源服务器的令牌?假设我有一个RestClient,想请求获取某个用户的资源,该用户通过我的身份验证服务器通过Facebook身份验证过程。在哪里可以找到要使用的令牌?如果这是一个要求,我认为您可以使用这个示例;您可能不需要自定义身份验证服务器。拥有自定义身份验证服务器的关键是抽象出与FB或github的交互。或者,如果您仍然希望使用自定义身份验证服务器方向,则从身份验证服务器公开一个端点(这将从FB获得您所需的资源),然后从您的资源服务器使用该端点。感谢您的澄清。我需要一个独立的身份验证服务器,因为我想结合我自己的用户数据库与一些SSO登录谷歌。我也没有找到这种Whatshover的例子。交互的工作方式对我来说不是很清楚,所以我试着用试错的方式来工作,这是很痛苦的。你看过了吗,你可能会发现它很有趣