B2 C: сбой AcquireTokenSilent для ADFS, работает для локальных учетных записей - PullRequest
0 голосов
/ 02 апреля 2020

Мы настроили AD FS в качестве поставщика удостоверений в наших потоках входа в систему B2 C. Интерактивный вход в систему работает просто отлично, но всякий раз, когда мы выполняем acquireTokenSilent с MSAL- JS в наших одностраничных приложениях (SPA), мы получаем ошибку:

Отказано в отображении 'https://mytenant.b2clogin.com ... 'во фрейме, потому что для' X-Frame-Options 'установлено значение' deny '.

Это происходит только для неявного потока. Приложения, использующие код авторизации, работают нормально. Локальные учетные записи работают с обоими потоками. Из прочтения документации это не должно произойти, потому что у меня должен быть сеанс.

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/customize-http-security-headers-ad-fs#x -frame-options

Обратите внимание, что не Интерактивные входы в систему могут быть выполнены через iFrame из-за установленной безопасности предыдущего уровня сеанса.

Что я могу сделать, чтобы исправить эту ошибку?

1 Ответ

2 голосов
/ 02 апреля 2020

После двойной проверки моих политик и документации ошибка стала очевидной. По какой-то причине у нас был код в нашей политике для технического профиля SAML:

      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>

Таким образом, в основном у пользователя был сеанс с B2 C и сеанс с ADFS, но B2 C не было сеанса с ADFS.

Все начало работать, как только мы использовали SamlSSOSessionProvider, как указано в документации .

          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />

....


    <ClaimsProvider>
      <DisplayName>Session Management</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SM-Saml-idp">
          <DisplayName>Session Management Provider</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="IncludeSessionIndex">false</Item>
            <Item Key="RegisterServiceProviders">false</Item>
          </Metadata>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>

При небольшом исследовании более того, мы обнаружили, что документация изначально содержала ту же ошибку, и именно так мы и получили код. Документация была исправлена ​​один месяц go!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...