6

我正在尝试为位于相同域中的2个网站设置单点登录使用表单身份验证进行单点登录

例如,

http://mydomain(包含表单的身份验证登录页面顶级站点)

http://mydomain/admin(父网站内驻留在虚拟应用程序seperately开发的网站)

读过关于单点登录几篇文章 例如

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

http://msdn.microsoft.com/en-us/library/dd577079.aspx

他们似乎认为这只是其在每个web.config中相同的machineKey部分的情况下,使该Cookie加密和解密是为每个应用程序

相同

我已经设置了这一点,我从来没有得到提示在子网站(虚拟应用程序)的凭据

我总是会在父站点得到提示。

除了具有相同的machineKey我也尝试添加相同<authentication><authorisation>元素

任何想法,我可能会错过?

+0

这个问题的任何成功? – AlfeG 2010-11-15 11:46:47

回答

1

我曾在的HttpModules部分使用<clear/>,因为有父项没有在bin目录中存在的孩子(/管理)

这样做(使用<clear/>这是)我有无意中清除了在web.config中指定的FormsAuthentication模块 C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

所以我需要重新添加这些显式给子(/ admin)配置

+0

我正在尝试做类似的事情。我们可以为同一个网站提供Forms AuthN和SSO吗?也许有两个不同的起始页面,但单个web.config?任何意见,建议? – VoodooChild 2011-11-16 02:35:12

0

尝试在两个应用程序的web.config中配置httpCookies部分以使用相同的域。这样,当您登录到一个应用程序时,您获得的FormsAuthentication cookie将对其他应用程序可见。

+0

感谢您的建议 - 不幸的是,没有任何区别 – ChrisCa 2010-03-16 11:02:49

1

web.config中的表单部分也需要相同。

Quote from - Forms Authentication Across Applications

要在应用程序配置表单身份验证,您正在参与共享Forms身份验证的所有应用程序设置的形式和Web.config文件的machineKey的部分以相同的值的属性。

以下示例显示了Web.config 文件的 验证部分。除非另有说明,否则在所有应用程序中,解密属性必须为 相同的名称,保护,路径,validationKey, 验证,解密密钥和 。 类似地,用于认证票据 (cookie数据)的加密和 验证密钥值和 加密方案和验证 方案必须相同。如果 设置不匹配,则不能共享认证 门票。

+0

谢谢 - 正如我前面所说,我已经尝试了相同的身份验证和授权部分 OPne警告我注意到事情是,当我使用完全限定路径loginURL例如“http://mydomain/login.aspx”我得到Windows Credentials的提示(不是我期望的表单登录页面) – ChrisCa 2010-03-16 11:27:31

+0

只是想确保我得到这个权利。如果您登录到Mydomain,您应该通过Mydomain/admin进行身份验证,并且此工作正常。 而且你希望它能够以相反的方式工作?即当你登录到管理你的身份验证Mydomain? 您是否看过MyDomain中的身份验证代码?它与/ admin有什么不同吗? – 2010-03-16 13:01:12

+0

不。当我访问包含登录页面的mydomain时,我想要对mydomain和mydomain/admin进行身份验证。 当我访问http:// mydomain时,我被重定向到登录页面 - 这正是我想要发生的事情。 当我访问http:// mydomain/admin时,我没有被重定向 - 我可以完全访问/ admin网站。即它没有从父母 – ChrisCa 2010-03-16 15:05:32

0

您需要在web.config中具有相同的验证元素。在包含的表单元素中,确保为每个应用程序赋予name属性相同的值。对于loginUrl属性,我使用相对路径并为所有应用程序使用相同的登录页面(例如,loginUrl = “/ MainApp/login.aspx的”)。

另外,您是否手动创建身份验证票证?

+0

获取认证是的,已尝试在父级中使用本地路径(login.aspx),并在/ admin中使用完整路径(mydomain/login.aspx),但我从来没有重定向到登录页面/管理员。如果我把两个完整的路径,然后我得到一个Windows登录提示(不是表单页面登录)的提示。已经尝试了IIS中的所有安全设置,但无法重定向到子站点上的登录页面 – ChrisCa 2010-03-16 15:34:12

+0

即使用户已经登录到非管理站点,您是否尝试显示登录页面?另外,你是否将限制用户部分放在授权元素中? – 2010-03-17 14:57:46

相关问题