Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何创建理解单点登录的网站网络?_.net_Authentication_Single Sign On - Fatal编程技术网

.net 如何创建理解单点登录的网站网络?

.net 如何创建理解单点登录的网站网络?,.net,authentication,single-sign-on,.net,Authentication,Single Sign On,我有几个网站(Asp.Net),我想有一个单一的登录 我希望用户访问Site1并让Site1联系中央单一登录服务器(SSS) 然后,SSS将确定用户未登录(不确定如何登录),并将用户重定向到登录屏幕(仍在SSS上) 如果经过身份验证,用户将被重定向回Site1 Site1会将此到达视为新的,并且可能会询问SSS用户是否已登录。这一次,SSS会提示相关用户确实登录了。因此Site1可以将这一事实存储在它的会话中以供将来参考(可能需要一些适当的超时) Site1将包含一个指向Site2的链接,用户可

我有几个网站(Asp.Net),我想有一个单一的登录

我希望用户访问Site1并让Site1联系中央单一登录服务器(SSS)

然后,SSS将确定用户未登录(不确定如何登录),并将用户重定向到登录屏幕(仍在SSS上)

如果经过身份验证,用户将被重定向回Site1

Site1会将此到达视为新的,并且可能会询问SSS用户是否已登录。这一次,SSS会提示相关用户确实登录了。因此Site1可以将这一事实存储在它的会话中以供将来参考(可能需要一些适当的超时)

Site1将包含一个指向Site2的链接,用户可以选择遵循该链接

到达Site2应触发Site2对用户进行身份验证的尝试

如何将到达站点2的用户识别为已访问站点1的同一用户,并发现他们已通过身份验证,从而无需再次登录?

注意:SSS需要是一个私人系统,我在其中控制帐户创建。因此,我恐怕不能依赖外部OpenID服务器


更新:我现在无法保证Site1、Site2和SSS将在同一个域中。。。所以我认为Cookie不会解决这个问题。

您可以尝试使用共享会话状态服务器。

您可以使用Cookie为用户存储和创建身份验证票据。我们已经做了好几次了,结果很好

不要这么快放弃OpenID-作为网站所有者,您可以选择支持哪个OpenID提供商。您可以选择运行自己的OpenID服务器,并且只信任它

另外,请记住OpenID是一个身份验证系统——用户X如何证明他们是他们所说的人

在StackOverflow上,当有人使用OpenID登录时,他们会自动创建帐户,但您不必这样做。您可以通过与每个帐户关联的OpenID完全控制帐户创建


还请记住,(通常)任何不需要编写和维护的软件都是一件好事。

像其他人那样做,使用GET或POST在站点之间传递DB生成的令牌,然后将这些令牌验证回与DB直接对话的web服务

所以用户希望进入站点1(www.domain1.com)。站点1检查本地域登录会话/cookie,找不到,将用户重定向到。如果存在较早的logindomain cookie(从登录到附属站点),请将其发送回站点1。如果没有,则执行您需要的任何用户身份验证(KERBEROS检查、表单身份验证、openID等)以生成唯一令牌。将其存储在logindomain的cookie中,并将其重定向回“return”指向的任何位置,并附加您的令牌:。一旦domain1针对web服务(或直接针对令牌数据库)验证令牌,它就可以使用用户凭据设置自己的本地登录会话/cookie

现在,您进入了站点2(www.domain2.com)并登录。您再次被重定向到logindomain,并设置了?return var,但这次它不会要求您输入密码-它的SSO cookie中已经有您的令牌。您会立即被重定向回:(与site1使用的令牌相同)。Domain2再次验证令牌,并允许您在不检查密码的情况下进入


如果您正在动态更改登录URL,或者尝试制作一个混合的AD/Forms Auth monster(就像我受命构建的那样),它会变得更加复杂,但这似乎工作得很好,并且与IBM和MS docs所说的专有SSO系统完全匹配(在高级别上)。

听起来很有趣。。。但是,我可以让Site1和Site2将哪些独特的信息传递给所述服务器,以便它们将用户呈现为我认为cookie是特定于域的同一个人。Site1、Site2和SSS可能位于不同的域,因此无法读取彼此的Cookie?下面是我们如何处理的。我们有一个主登录站点,我们称之为site1,site1有指向site2的链接,当您遵循所述链接时,site1将使用用户名向该页面发布到site2上的身份验证表单,然后创建票证。抱歉,忘了我们没有在上面使用Cookie。基本上,site1成为您的SSO解决方案并处理到site2的身份验证,但是如果您首先访问site2,则需要将其重定向到处理身份验证的站点,这并不是什么大问题。“您可以选择运行自己的OpenID服务器,并且只信任它。”-好的,听起来很有趣。。。有什么建议可以开始研究这个吗?这是一个色情网络吗?;)