两个不同的网站使用不同的流向本地OpenId Connect提供商进行身份验证:
我希望在这两个站点中实现单点登录,即在用户在网站A中进行身份验证后,在访问网站B时会自动进行身份验证,反之亦然。
我可以使用哪种技术来获得此功能?
[编辑解释原因]
我应该解释一下这个案子的原因:
主要想法是让本地授权服务器(OpenId Connect)处理所有与身份验证相关的任务。
但是,对于主站点,良好用户体验的主要要求是提供登录作为无缝的页面操作,无需重定向或新窗口。因此,身份验证是作为AJAX调用执行的:浏览器将用户名/密码发送到网站服务器,该服务器使用用户凭据密码流向授权服务器请求身份验证。
其他不受信任的网站应使用标准隐式流程与授权服务器进行身份验证。
因此,问题可以重新表述为:如何使用OpenId Connect服务器维护单点登录功能,使用自己的登录表单对网站中的用户进行身份验证。
由于
答案 0 :(得分:0)
简短回答:在所描述的配置中,这是不可能的,因为网站B要求用户凭证而不检查提供商处是否已存在SSO会话(因为用户凭证密码流的工作原理)。
但您确定网站B使用资源所有者密码凭据流吗?该流程未在OpenID Connect中明确定义,这正是由于您所面临的问题:它不会增加LDAP或HTTP Basic流量的安全价值,因为依赖方可以看到用户'提供商的密码。因此,几乎没有支持它的OpenID Connect Provider部署或实现。
解决方案:使网站A和B都使用基本客户端配置文件,这比隐式客户端配置文件更受欢迎,因为后者中的URL /重定向/日志/标头中存在令牌。