我通过阅读本文实现了单点登录:
http://www.codeproject.com/KB/web-security/aspnetsinglesignon.aspx
但是,从可扩展性的角度来看,我有一个问题。如果我在一台机器上托管第一个应用程序,在另一台机器上托管第二个应用程我目前没有2台不同的服务器,否则我会自己验证。有人有经验吗?
感谢。
答案 0 :(得分:2)
是的,只要两台服务器上的machine.config中定义的加密和验证密钥完全相同,它就会起作用。如果您忘记了这一点,它将无法工作,因为在一台服务器上加密的cookie不会在其他服务器上解密。
文章建议将这些密钥放在Web.config上。这是一种有效的方法,但如果您需要在多个网站上进行SSO,最好在machine.config
中定义它,前提是您可以控制它并且同一服务器中的所有应用程序都要共享此功能。
答案 1 :(得分:1)
除了加密和验证密钥匹配之外,您还需要在两台计算机上使用相同的cookie名称。
如果您的应用程序和服务器可能是.net3.5 / .net4.0和iis6 / iis7的混合,您还应该明确说明哈希算法。通过将默认哈希算法从SHA1更改为SHA256,Microsoft引入了从3.5到4.0的重大更改。这在这里描述:
但实际上您可能需要在web.config或machine.config中使用以下内容:
<system.web>
<machineKey validation="SHA1" />
...
</system.web>
<system.web>
<membership defaultProvider="myMembership" hashAlgorithmType="SHA1">
...
</system.web>