繁体   English   中英

Spring Boot Auth服务器中的多个SSO提供程序

[英]Multiple SSO providers in Spring Boot Auth server

我按照Spring的本教程阅读并实现了自己的Auth服务器。 有多个SSO提供商 - Facebook,Github和自定义身份验证服务器。 在本教程中,auth服务器包含其他SSO提供程序的处理。

我有一个单独的资源服务器,使用以下属性链接到我的auth服务器:

security.oauth2.resource.userInfoUri=http://localhost:9000/user

我可以使用cUrl命令从我的auth服务器获取令牌:

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或我的自定义身份验证服务器进行身份验证。 它应该简单地询问auth服务器什么是Principal(已登录的用户),然后决定向他显示哪些资源,对吧?

我没有任何UI,这将支持移动应用程序,所以我需要udnerstand如何使用REST reqeusts处理身份验证。

如果我理解你的问题,

如何使用其他SSO提供程序从auth服务器获取此类令牌?

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

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

你的自定义Auth服务器如何识别一个人,它肯定可以使用用户ID和密码; 考虑'使用FB登录'作为它给用户的另一个不错的选择。

除了FB和github之外,如何添加像digitalocean这样的其他SSO提供程序?

就像我们为FB和Github做的一样(用数字海洋注册客户端ID,然后在auth服务器应用程序中注册,在属性/ yaml文件中添加客户端ID和秘密等)

资源服务器不应该关心如何获取令牌以及我是否使用Facebook或我的自定义身份验证服务器进行身份验证。 它应该简单地询问auth服务器什么是Principal(已登录的用户),然后决定向他显示哪些资源,对吧?

是的,你的理解是正确的。

编辑(回答评论中提出的问题)

但是让我说我​​通过我的Auth服务器登录Facebook。 我在哪里可以找到可以与资源服务器一起使用的令牌? 假设我有一个RestClient,并且想要通过我的auth服务器获取属于用户的某些资源的请求,该用户经过了Facebook身份验证过程。 我在哪里可以找到要使用的令牌?

如果这是一个要求,我想你可以使用这个例子 ; 您可能不需要这样的自定义身份验证服务器。 拥有自定义auth服务器的重点是抽象出与FB或github的交互。

要么

如果您仍想使用自定义auth服务器方向,则从Auth服务器公开端点(这将从FB获取您需要的资源),然后从资源服务器中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM