如何在.net中实现单点登录?(how to implement single sign on in

2019-07-31 04:23发布

什么是在.NET应用程序中实现单点登录的最佳解决方案? 我用Google搜索,发现一些解决方案,但我不是很不服气,与这些解决方案。

在WEBSITE1用户登录,然后进入WEBSITE2。 在如何WEBSITE2知道用户已经登录? 我想通过传递一些令牌将由WEBSITE2数据库的有效性进行检查的URL。 这意味着我需要马歇尔所有WEBSITE1的网址这需要到WEBSITE2?

其次,如果用户继续浏览网站2的发言权1小时,然后转移到WEBSITE1。 到那个时候WEBSITE1会话超时所以用户会看到一个登录页面,是不是? 但是,这种行为是错误的,因为每个功能上的单点登录。

Answer 1:

我想你是误会了如何单点登录的作品。

让我们考虑WEBSITE1和WEBSITE2谁想要使用单点登录。

一个登录的网站在identityProvider创建。 这是会出现一个登录屏幕的唯一地方。

当用户访问网站1并选择登录网站1将用户在identityProvider登录屏幕。 用户登录到identityProvider这滴自己的登录cookie为其域(也许可以让用户保存他们的认证信息,所以他们不会再提示)。 然后,它的浏览器重定向回WEBSITE1包括在其中WEBSITE1裂开请求令牌,从获取的身份信息,并执行它自己的登录位(丢弃它自己的身份验证cookie,并持续然而就是了)。

然后,用户访问网站2,选择登录。 WEBSITE2反弹用户identityProvider,谁已经知道用户是谁,如果他们用户选择保存自己的登录信息,默默的验证,然后重定向回另一个令牌,该令牌WEBSITE2裂开,然后执行它自己的登录位WEBSITE2。

有一堆围绕它的安全性,限制令牌特定的网站,只允许令牌将被发送到白名单的网站等等,等等

因此,要解决您的问题

  1. 在WEBSITE1用户登录,然后进入WEBSITE2。 在如何WEBSITE2知道用户已经登录? 事实并非如此。 WEBSITE2必须从单点登录网站的第一个请求认证信息。
  2. 这意味着我需要马歇尔所有WEBSITE1的网址这需要到WEBSITE2? 不,除非你WEBSITE1身份提供者也。 即使是这样,这将是痛苦的,最好有WEBSITE2回identityprovider重定向如果令牌是必要的。
  3. 其次,如果用户继续浏览网站2的发言权1小时,然后转移到WEBSITE1。 到那个时候WEBSITE1会话超时所以用户会看到一个登录页面,是不是? - 这取决于你如何配置WEBSITE1,以及它是如何长的身份验证cookie持续。
  4. 但是,这种行为是错误的,因为每个功能上的单点登录。 不,这不对。 单点登录,并不意味着你是网站之间共享的浮动令牌。 它使用单点登录还是各个网站创建了自己的身份验证cookie。 如果用户可以追溯到WEBSITE1它检测到一个过期验证cookie什么可能发生的事情是,然后再次向用户发送过的单点登录页面,在这里他们认证(默默)和一个新的令牌被推回WEBSITE1这将创建一个新的验证Cookie本身。


Answer 2:

微软官方的方法是通过活动目录联合服务(它包装SAML与AD认证)。 这有你要找的特性 - 但可能是太重量级的公共Web应用程序。



Answer 3:

我假设你不想使用Windows身份验证与Active Directory等的一种方法是使用查询字符串的安全令牌从一个身份验证的会话对方交出,你描述。

这两个应用程序使用相同的公共密钥编码/解码的安全令牌。 正如你所说,这工作得很好,如果你限制了网站之间的,预定义的过渡环节,但如果你希望能够使用的应用程序之间的任何页面的链接,您将需要在运行中生成的URL,这样它们包含的令牌。

你处理超时的方式是,安全令牌还包含一个到期时间。 您生成一个新的安全令牌每一个页面请求,或者当您创建的应用程序之间的新联系。

通常情况下,安全令牌包含用户名和超时,登录检查或者如果超时已经过期返回用户ID或空。

这不是一个快速的解决方案正确,牢固代码了。 也许你可以找到关于代码项目预建一个?



Answer 4:

您可以使用不同的SSO机制,根据您的应用程序不同的应用程序。

  • 使用机配置

  • 单点登录在一个二级域名

  • 跨域使用公用数据库 (试行应该由我们来照顾)

不过,我可以看到直播,谷歌,雅虎,Facebook等“ 乱箱SSO”服务通过支持SAML提供身份验证。 这将帮助我们摆脱维护我们自己的SSO服务实现的问题。

如果你需要一个基本的了解如何SSO工作,你可以参考这里



Answer 5:

MS做了一份关于其在企业内部,几年前-我们建立了样品,但从来没有实现它真正的- 单点登录



Answer 6:

请了解使用OAuth和社会供应商这个环节,它提供了已熟成的.Net的身份验证功能众多OAuth的微软培训视频和单点登录与社会提供商



文章来源: how to implement single sign on in .Net?