LegacySameSiteCookieBehaviorEnabled = 0在注册表中对应用程序身份验证过程的影响

问题描述 投票:0回答:1

我有一个带有.NETFramework 4.6,具有AzureAD身份验证和OpenID Connect协议的asp.net mvc4应用程序。现在,随着Chrome80 SameSite = None更新的最新更新,应用程序身份验证失败。

这里是测试说明:https://docs.microsoft.com/en-us/office365/troubleshoot/miscellaneous/chrome-behavior-affects-applications#testing-guidelines

我使用了下面提到的使用URLRewrite模块设置SameSite = None的文章:

https://blog.elmah.io/the-ultimate-guide-to-secure-cookies-with-web-config-in-net/

<system.webServer>
  <rewrite>
   <outboundRules>
        <rule name="Remove Server Header">
          <match serverVariable="RESPONSE_Server" pattern=".+" />
          <action type="Rewrite" value="" />
        </rule>
        <rule name="Add SameSite" preCondition="No SameSite">
          <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
          <action type="Rewrite" value="{R:0}; SameSite=None" />
        </rule>
        <preConditions>
          <preCondition name="No SameSite">
            <add input="{RESPONSE_Set_Cookie}" pattern="." />
            <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
          </preCondition>
        </preConditions>
</outboundRules>
  </rewrite>
  ...
</system.webServer>

将Chrome浏览器中的标志更新为已启用:

enter image description here

将注册表中的LegacySameSiteCookieBehaviorEnabled的值设置为1会导致成功的应用程序身份验证,但是如果将LegacySameSiteCookieBehaviorEnabled设置为0,则在应用程序身份验证失败的情况下。

谁能帮助我知道如何解决此问题?

c# asp.net-mvc-3 openid passport-azure-ad
1个回答
0
投票

似乎您正在将Chrome标志(chrome://flags/#same-site-by-default-cookies)与Chrome企业策略-​Legacy​Same​Site​Cookie​Behavior​Enabled混在一起。

Chrome企业策略适用于维护旧版应用程序的组织,这些应用程序中的cookie难以轻易更新。通过将其设置为​Legacy​Same​Site​Cookie​Behavior​Enabled,您将明确维护cookie的旧行为。如果这确实是您想要做的,我将看一下更具体的1

但是,由于您尝试更新您的应用程序,因此我将确保您没有设置任何策略,以便可以确保实施新行为。您可以访问LegacySameSiteCookieBehaviorEnabledForDomainList policy,如果所有行均为绿色,则将在浏览器中启用新行为。

我不确定您的Cookie规则,但是我看不到您将LegacySameSiteCookieBehaviorEnabledForDomainList明确添加到https://samesite-sandbox.glitch.me Cookie中。这两个都必须设置。我还要确保您不只是将Secure添加到每个单独的cookie中。只需对您知道需要从第三方上下文访问的对象执行此操作。对于其他cookie,请考虑SameSite=None

[如果需要查看请求中阻止了哪些cookie,可以在Chrome DevTools中检查“网络”标签。具体来说,选择一个请求并检查其中的cookie选项卡。您可以在SameSite=None; Secure

中找到详细说明
© www.soinside.com 2019 - 2024. All rights reserved.