在SAML中有一个IdP启动登录的概念,这意味着识别方(IdP)可以向依赖方(RP /消费应用程序)发送未经请求的令牌,用户可以登录而无需呼叫到IdP。 我有一个场景,我需要这样做,但我希望ThinkTecture Identity Server v3处于中间位置,因为我将处理我的正常身份验证(如在非SAML日常工作中)。由于我无法控制的原因,我无法打电话给SAML IdP。 我想做的是:
我花了很多时间看这个,我也看了spec谈到从第三方启动登录,但是如果我理解正确,它仍然从第3方开始将用户引导到RP,然后RP向IdP(可能是ThinkTecture Identity Server)发送登录请求,这不是我真正需要的。
总之,我不认为OpenID Connect具有SAML的IdP发起的SSO等效功能。这是正确的还是我只是无法弄明白,还是ThinkTecture IdentityServer不支持它?
这一切都很有效,非常感谢ThinkTecture和KentorIT。唉,这一切仍然从我的网站开始,最终导致重定向到SAML服务器,由于非技术原因,我无法在我的方案中执行此操作。
我当然可以在这种情况下完全免除IdSrv,但我有理由让IdSrv处于中间位置并通过我的所有身份验证。 所以我现在的想法是做这个流程:
在我开始实施之前,有人能告诉我这是否是正确的方法,或者我错过了一些非常明显的东西?
看起来这个想法也不起作用。基本上我需要做的是使用IdP启动的SAML SSO对 Identity Server 进行身份验证,然后重定向到RP并使用身份验证请求将RP重定向到Identity Server。 然而,据我所知,除了作为RP请求的一部分,没有办法让Identity Server登录。换句话说,即使我的SAML中间件很乐意接受未经请求的令牌,IdSrv也会忽略SAML中间件请求将其登录(我认为这是公平的)。
所以,我认为另一种解决方案是编写一个可以验证SAML令牌的控制器,并且直接在同一服务器上运行的代码中调用IdSrv 并告诉它使用我手动构建的主体来记录用户。
(新)问题是, Identity Server是否公开了一种机制,让我在代码中记录用户,以便Identity Server为用户设置适当的cookie ?
答案 0 :(得分:2)
简短的回答是,目前这是不可能的 我现在开了一个issue with Identity Server并开发了一些proof-of-concept code 这个答案就像现在的占位符一样 - 当一个解决方案出现时,我将以一个明智的细节更新这个答案。