如何在.Net中实现单点登录?

Bhu*_*ale 6 .net multiple-sites single-sign-on

在.net应用程序中实现单点登录的最佳解决方案是什么?我用google搜索并找到了一些解决方案,但我对这些解决方案并不十分信服.

用户登录website1,然后移至website2.website2如何知道用户已登录?我想通过在URL中传递一些令牌,这些令牌将由website2在数据库中检查有效性.这意味着我需要编组网站1中的所有网址到网站2?

其次,如果用户继续浏览网站2说1小时,然后移动到website1.到那时web1会话已经超时,所以用户会看到一个登录页面,不是吗?但是根据单点登录功能,这种行为是错误的.

blo*_*art 15

我认为你误解了单点登录的工作原理.

让我们考虑想要使用单点登录的website1和website2.

登录网站在identityProvider上创建.这是登录屏幕出现的唯一位置.

当用户访问website1并选择登录website1时,会将用户发送到identityProvider的登录屏幕.用户登录到identityProvider,它会为其域删除自己的登录cookie(并且可能允许用户保存他们的身份验证信息,以免再次提示他们).然后它将浏览器重定向回到website1,包括请求中的一个令牌,网站1打开,获取身份信息并执行它自己的登录位(删除它自己的身份验证cookie,无论它想要什么).

然后用户访问website2并选择登录.Website2将用户反弹给identityProvider,后者已经知道用户是谁,如果用户选择保存他们的登录信息,则默默地进行身份验证,然后使用另一个标记重定向回到website2,该标记会打开,然后执行自己的登录位.

它周围有很多安全措施,限制特定网站的令牌,只允许将令牌发送到列入白名单的网站等.

所以要解决你的顾虑

  1. 用户登录website1,然后移至website2.website2如何知道用户已登录?它没有.website2必须首先从单点登录站点请求身份验证信息.
  2. 这意味着我需要编组网站1中的所有网址到网站2?不,除非您将website1设为身份提供商.即便如此,如果需要令牌,最好还是将website2重定向回identityprovider.
  3. 其次,如果用户继续浏览网站2说1小时,然后移动到website1.到那时web1会话已经超时,所以用户会看到一个登录页面,不是吗? - 这取决于你如何配置website1,以及它的身份验证cookie持续多长时间.
  4. 但是根据单点登录功能,这种行为是错误的.不,这不对.单点登录并不意味着您获得站点之间共享的浮动令牌.使用单点登录的每个网站仍会创建自己的身份验证Cookie.可能发生的情况是,如果用户返回到website1,它会检测到过期的身份验证cookie,然后将用户再次发送到单点登录页面进行身份验证(静默),并将新令牌推回到network1,从而创建新的身份验证cookie.