【问题标题】:Asp.Net authentication in Session State?会话状态下的 Asp.Net 身份验证?
【发布时间】:2014-12-27 19:55:52
【问题描述】:

我正在尝试在我维护的三个网站之间进行跨应用程序 SSO。其中两个在 .NET 4.0 下运行,而另一个在 2.0 下运行。主站点是 4.0,而其余的 4.0 和 2.0 站点是在主站点下运行的子站点。 4.0 和 2.0 站点的 web.configs 都具有如下所示的身份验证设置:

<machineKey decryption="AES" validation="SHA1" decryptionKey="<decryptkey>" validationKey="<validationkey>"/>
<authentication mode="Forms">
  <forms name=".MyAuthenticationTicket" domain=".MyDomain-Org" loginUrl="/Login.aspx" path="/" enableCrossAppRedirects="true" protection="All" timeout="43200" cookieless="UseCookies" />
</authentication>

需要明确:现在该站点正在运行我的本地机器,所以上面的域是正确的,它指向 -Org 而不是 .Org。

问题是,我可以登录到任一站点,但 .MyAuthenticationTicket 仅在我登录 4.0 站点时创建,而不是 2.0 站点。当我登录那个时,没有创建票证。但是,我确实发现,当我登录它时,会创建一个 ASP.NET_SessionId cookie,当我删除它时,我会从 2.0 站点注销。无论如何,我仍然无法为我的网站实现 SSO。

那么...我在这里做错了什么?谁有想法?我在这里缺少一个设置吗?

【问题讨论】:

  • 与论坛网站不同,我们不使用“谢谢”、“感谢任何帮助”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?.
  • 会话和身份验证彼此无关。删除会话 cookie 不会让您退出您的网站,除非您在代码中做错了什么。
  • 好吧,要清楚,这是“我的应用程序”,但不是我的代码。有问题的应用程序是Screwturn wiki,实际上删除会话cookie确实会让我退出。
  • @EDanaII - 然后我会从这个应用程序中尖叫,因为使用 Session 进行身份验证非常不安全。
  • @EDanaII - 在查看ScrewTurn Wiki 的源代码后,它不使用表单身份验证,而是使用自己的身份验证方法,尽管它确实将此身份验证存储在定义于数据库的 GlobalSettings 表。那就是它不会创建表单身份验证 cookie,因为它不使用表单身份验证。这也意味着您不能使它们与表单身份验证兼容。

标签: asp.net authentication cookies cross-application


【解决方案1】:

如果您希望您的票证跨版本兼容,您需要在您的 4.0 应用程序中设置表单身份验证票证的兼容版本。

<forms ... ticketCompatibilityMode="Framework20" .../>

【讨论】:

  • 谢谢,但这并没有成功。我想我担心的是,当我登录 2.0 应用程序时,那里没有创建身份验证票。我假设两个表单标签设置相同,它应该。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2017-08-03
相关资源
最近更新 更多