我有2个使用Forms身份验证设置的asp.net Web应用程序来进行跨应用程序身份验证。我已将以下代码放在webApp1和webApp2 web.config文件中 system.web标记。
<forms timeout="11520" loginUrl="https://App1/logon.aspx" cookieless="AutoDetect" name=".ASPXFORMSAUTH"
protection="All"
path="/"
domain="fsenet.companyname.net" />
</authentication>
<machineKey
decryption="AES"
validation="SHA1"
decryptionKey="306C1FA852AB3B0115150DD8BA30821CDFD125538A0C606DACA53DBB3C3E0AD2"
validationKey="61A8E04A146AFFAB81B6AD19654F99EA7370807F18F5002725DAB98B8EFD19C711337E26948E26D1D174B159973EA0BE8CC9CAA6AAF513BF84E44B2247792265" />
场景1工作原理:如果我尝试访问webApp2上的某个页面并且我未经过身份验证,它会将我重定向回webApp1登录页面,然后我会登录并重定向回webApp2上的页面,所有工作正如预期的那样使用此重定向方法。
场景2问题:如果我使用webApp1登录并在webApp1中的页面上有链接并尝试导航到webApp2中的页面,我会自动重定向回登录页面。根据我的理解,我应该已经过身份验证,可以访问webApp2上的页面,不应该要求再次进行身份验证。
我使用此代码来识别我是否经过身份验证
User.Identity.IsAuthenticated.ToString()
场景2显示重定向的错误原因,场景1显示为True。
我是否遗漏了一些设置,允许我在使用webApp1进行身份验证后访问webApp2上的内容?
答案 0 :(得分:0)
为跨应用程序SSO正确设置FBA设置非常重要。已有博客文章介绍这些技巧,我可以看到你错过了多个步骤,然后一个应用程序无法从另一个应用程序获取经过身份验证的信息。
答案 1 :(得分:0)
好的我做错了是没有访问具有相同域名的两个网站,例如我在调试时正在登录 HTTP:/本地主机/站点1 (localhost是错误的)然后从我们到http://domianname.net/Site2/Page1.aspx的链接,当我应该通过http://domianname.net/Site1和http://domianname.net/Site2/Page1.aspx(两者都带有域)访问它们时允许身份验证cookie从我相信的正确位置接过来。