我正在尝试实现使用 .Net 表单身份验证的 SSO 解决方案。我知道为所有子域设置一个 cookie,如下所示:
<forms
name="name"
loginUrl="URL"
defaultUrl="URL"
domain=".example.com">
</forms>
我的问题 - 有没有办法让“域”字段动态化?这样我就可以将域附加为 URL 参数?
http://SSO.com/?domain=example.com
我正在尝试实现使用 .Net 表单身份验证的 SSO 解决方案。我知道为所有子域设置一个 cookie,如下所示:
<forms
name="name"
loginUrl="URL"
defaultUrl="URL"
domain=".example.com">
</forms>
我的问题 - 有没有办法让“域”字段动态化?这样我就可以将域附加为 URL 参数?
http://SSO.com/?domain=example.com
这里的这个domain
参数是用来设置在认证的cookies上的。
您可以简单地忽略它,这意味着根本不添加它,cookie 将设置为 url 上看到的内容。
现在这里的诀窍是确保您的站点始终使用相同的子域,例如,始终调用www.example.com
(不是一次调用 www.example.com,一次调用 example.com)
不幸的是,您要求的内容不适用于开箱即用的 Forms Auth。如果您将域设置为您用于身份验证的域以外的域,您的身份验证应用程序将无法看到 cookie,并认为用户从未登录。
这类事情通常由需要 SSO 调用 SSO 域以进行身份验证的域处理。您可以在 CAS ( http://en.wikipedia.org/wiki/Central_Authentication_Service ) Facebook Connect 甚至 Microsoft 的 Passport 身份验证等系统中看到这一点。
如果您正在寻找支持良好的 MS 友好型 SSO,请查看新的 Azure Active Directory 系统 ( http://blogs.technet.com/b/serverandtools/archive/2012/07/12/introducing- windows-azure-active-directory-ad-web-single-sign-on-sso.aspx )