Single sign on WIF-可选身份验证

Single sign on WIF-可选身份验证,single-sign-on,wif,Single Sign On,Wif,我正在开发一个概念验证应用程序。基本功能可以工作,我可以登录到一个网站,链接到共享相同STS的另一个网站,合作伙伴网站可以正确地获取凭据。 但是,如果我们链接到的页面需要身份验证(我想这是有意义的),合作伙伴站点只会请求令牌 理想情况下,我希望链接到一个不需要您进行身份验证的合作伙伴页面,但如果用户已经通过身份验证,我希望至少能够在合作伙伴站点上识别他们。 目前,如果我的合作伙伴登录页不需要身份验证,则用户到达时似乎没有登录。一旦用户请求合作伙伴站点上确实需要身份验证的页面,它就会在不要求用户登

我正在开发一个概念验证应用程序。基本功能可以工作,我可以登录到一个网站,链接到共享相同STS的另一个网站,合作伙伴网站可以正确地获取凭据。 但是,如果我们链接到的页面需要身份验证(我想这是有意义的),合作伙伴站点只会请求令牌

理想情况下,我希望链接到一个不需要您进行身份验证的合作伙伴页面,但如果用户已经通过身份验证,我希望至少能够在合作伙伴站点上识别他们。 目前,如果我的合作伙伴登录页不需要身份验证,则用户到达时似乎没有登录。一旦用户请求合作伙伴站点上确实需要身份验证的页面,它就会在不要求用户登录的情况下获取令牌

我尝试过使用SecurityTokenReceived和RedirectingTodinityProvider事件,但到目前为止,我被难倒了


感谢您的任何想法。

所以,您遇到的问题是如何处理劫持请求。此模块负责检测用户是否拥有有效会话(基于从STS成功重定向时写入的cookie),如果没有,则将用户重定向到STS以获取有效令牌。提供连接到重定向/身份验证过程的各个阶段所需的事件

根据您的描述,听起来您希望发生以下情况:

  • 用户单击重定向到合作伙伴站点的链接
  • 在合作伙伴站点,拦截请求,系统确定用户是登录到STS还是匿名
  • 如果用户与STS有有效会话,则为该用户提取声明
  • 问题是,如果不先将用户发送到STS,您的RP就无法知道用户是否拥有有效会话(RP之间或STS之间不通信。用户的浏览器用作RP和STS之间的通信手段,其形式为WS-Fed指令和重定向期间url中传递的SAML令牌)。如果用户被发送到STS,那么他们必须进行身份验证,这对于匿名用户来说可能是个问题

    因此,我认为没有一个“技巧”可以通过配置或拦截请求来确定用户是否与STS有有效的会话。但是,您可以从合作伙伴站点截获的推荐人那里传递提示。此提示可以采用url上的参数形式,该参数向合作伙伴站点指示当前用户具有有效会话,并继续并重定向到STS(缺少此提示将指示匿名用户)。您还可以构建一个系统,使用两个站点都可以访问的资源(即数据库)来“传递”登录用户的知识

    你肯定很快就会知道,WIF通常会为拼图提供拼图,但每种情况都不同,你必须自己提供其他拼图


    希望这有帮助

    所以,您遇到的问题是如何处理劫持请求。此模块负责检测用户是否拥有有效会话(基于从STS成功重定向时写入的cookie),如果没有,则将用户重定向到STS以获取有效令牌。提供连接到重定向/身份验证过程的各个阶段所需的事件

    根据您的描述,听起来您希望发生以下情况:

  • 用户单击重定向到合作伙伴站点的链接
  • 在合作伙伴站点,拦截请求,系统确定用户是登录到STS还是匿名
  • 如果用户与STS有有效会话,则为该用户提取声明
  • 问题是,如果不先将用户发送到STS,您的RP就无法知道用户是否拥有有效会话(RP之间或STS之间不通信。用户的浏览器用作RP和STS之间的通信手段,其形式为WS-Fed指令和重定向期间url中传递的SAML令牌)。如果用户被发送到STS,那么他们必须进行身份验证,这对于匿名用户来说可能是个问题

    因此,我认为没有一个“技巧”可以通过配置或拦截请求来确定用户是否与STS有有效的会话。但是,您可以从合作伙伴站点截获的推荐人那里传递提示。此提示可以采用url上的参数形式,该参数向合作伙伴站点指示当前用户具有有效会话,并继续并重定向到STS(缺少此提示将指示匿名用户)。您还可以构建一个系统,使用两个站点都可以访问的资源(即数据库)来“传递”登录用户的知识

    你肯定很快就会知道,WIF通常会为拼图提供拼图,但每种情况都不同,你必须自己提供其他拼图

    希望这有帮助