我在ie下运行了一个基本网站( Asp.net WebForms 应用程序)。
http://localhost:90/
然后我创建了一个新的(这次是 Asp.net MVC )应用程序并将其添加到
下http://localhost:90/mvc/
但不仅仅是作为一个简单的虚拟文件夹,而是作为一个应用程序文件夹,通过定义一个不同的应用程序池来运行它,与父文件相比 application。
由于浏览器无法知道基本上在同一个域上有两个不同的应用程序,它的工作方式如下:
http://localhost:90/
http://localhost:90/mvc
我是否有可能根据同一个Cookie对用户进行身份验证?我将配置我的MVC应用程序登录重定向到父应用程序以具有共享身份验证屏幕。但我想知道从那时起谁经过认证和工作。
我已经阅读了有关共享相同system.web/machineKey
值以提供此类功能的内容,但我想要一些真实的示例。
我知道这两个应用程序将无法共享会话状态,这不是问题,因为我不希望它们。我想要的只是一种单一登录(SSO / SSS)
这可能吗?怎么样?
我已经阅读了有关此问题的其他问题/答案,但他们要么是询问跨域/跨服务器等。这个问题都在同一个IIS网站上。
答案 0 :(得分:37)
我自己找到了。
这是MSDN上关于此场景的文章。无论如何,对于那些稍后会追逐相同信息的人,我决定保留这个问题。
MSDN: Forms Authentication Across Applications
您必须在两个应用程序的web.config
中配置机器密钥,以便它们匹配,因此它们将能够解码另一方生成的数据。这就是整个伎俩。 MSDN文章详细解释了这一点,包括如何生成这些密钥。
答案 1 :(得分:7)
如果有人仍然无法共享密钥使用
的 compatibilityMode="Framework20SP1"
强>
<machineKey validationKey="same key all over"
decryptionKey="same key all over"
validation="SHA1" decryption="AES"
compatibilityMode="Framework20SP1"/>