та же проблема с сайтом для net приложений, размещенных на Azure IAAS с Azure интеграцией AD - PullRequest
0 голосов
/ 23 марта 2020

У нас есть ASP. NET веб-форм, а также ASP. NET MVC приложений с Azure AD Integration, которые размещены в среде Azure IAAS. Из-за недавней версии безопасности Chrome> 80 и выше, большинство приложений начали ломаться. Ниже приведена версия фреймворка

  1. Все приложения были запущены на 4.5.2, а также зависимый пакет NuGet

    . Чтобы устранить эту проблему, мы исследовали приведенную ниже опцию. Поскольку у нас есть несколько вариантов, нам нужны экспертные данные о том, какой вариант лучше всего подходит для APPS с Azure AD Integration.

  2. Чтобы установить правило перезаписи IIS под тегом system.webServer. Работает без каких-либо изменений кода и обновления инфраструктуры

<rewrite>
  <outboundRules>
    <preConditions>
      <!-- Checks User Agent to identify browsers incompatible with SameSite=None -->
      <preCondition name="IncompatibleWithSameSiteNone" logicalGrouping="MatchAny">
        <add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" />
        <add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" />
        <add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" />
      </preCondition>
    </preConditions>
    <!-- Adds or changes SameSite to None for the session cookie -->
    <!-- Note that secure header is also required by Chrome and should not be added here -->
    <rule name="SessionCookieAddNoneHeader">
      <match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)?"  />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
          </conditions>
      <action type="Rewrite" value="{R:1}; SameSite=None; Secure" />
    </rule>
    <!-- Removes SameSite=None header from all cookies, for most incompatible browsers -->
    <rule name="CookieRemoveSameSiteNone" preCondition="IncompatibleWithSameSiteNone">
      <match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)?"  />
      <action type="Rewrite" value="{R:1}" />
    </rule>
  </outboundRules>
</rewrite>
Другой вариант, мы попытались обновить версию Framework до 4.7.2 и соответствующие пакеты nuget. Требуются изменения кода в OpenIDconnect. Мы пытались реализовать то же самое на основе документации, предоставленной Microsoft

https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-handle-samesite-cookie-changes-chrome-browser?tabs=dotnet

Третьим было попытаться понизить версию фреймворка до 4.5.0 и соответствующих пакетов NuGet. Эта опция также работает нормально.
...