ACS не обрабатывает ответ SAML в субприложении - PullRequest
0 голосов
/ 16 января 2020

Я изо всех сил пытаюсь найти причину этого поведения. У меня есть простое приложение MVC с настроенным пакетом SustainSys. Я попытался настроить его как для нашего внутреннего сервера SecureAuth, так и для тестового сервера https://stubidp.sustainsys.com.

Все это работает на локальном хосте и когда это приложение root нашего внутреннего IIS server.

Когда я помещаю его в папку подпрограммы IIS, он перенаправляет на логин сервера sso, возвращается на маршрут ~ / Saml2 / Acs с информацией аутентификации (я вижу это в fiddler2), но Acs, кажется, не обрабатывает его в этот момент, и я остаюсь не прошедшим проверку подлинности, и поэтому он возвращается к странице входа в систему и я запускаю цикл.

Я знаю о наследовании web -config под-приложения, поэтому я даже удалил web.config из root, так что ничто не противоречит тому, что есть в суб-приложении. Я играл с параметром returnURL безрезультатно (с включенным или не включенным каталогом).

Приложения в IIS (root и вспомогательное приложение) настроены одинаково для аутентификации.

У меня заканчиваются идеи для тестирования. У кого-нибудь есть мысли?

<sustainsys.saml2 entityId="https://apps.xxxxx.com" returnUrl="https://apps.xxxxx.com/yyyyy">
    <identityProviders>
        <add entityId="https://sso.xxxxx.com/SecureAuthXX" signOnUrl="https://sso.xxxxx.com/SecureAuthXX" allowUnsolicitedAuthnResponse="true" binding="HttpRedirect">
            <signingCertificate fileName="~/App_Data/SecureAuth03VM.xxxxx.com.cer" />
        </add>
    </identityProviders>
    <federations>
        <add metadataLocation="https://apps.xxxxx.com/Federation" allowUnsolicitedAuthnResponse="true" />
    </federations>
</sustainsys.saml2>
<system.identityModel.services>
    <federationConfiguration>
        <cookieHandler requireSsl="true" name="CookieAuth" />
    </federationConfiguration>
</system.identityModel.services>

Ответы [ 2 ]

1 голос
/ 29 января 2020

Я решил проблему и хотел опубликовать то, что исправило, так как, возможно, однажды это может кому-то помочь.

Проблема была не в ответе SAML или библиотеке Sustainsys, а в атрибуте, в котором отсутствует из web.config. После добавления «path = '/'» к элементу cookiehandler в конфигурации федерации (см. Ниже) он начинает сохранять состояние авторизации в System.Security.Principal и теперь отлично работает в приложении root, а также во всех подпрограммах. -приложения.

<system.identityModel.services>
    <federationConfiguration>
        <cookieHandler requireSsl="true" name="FedAuth" path="/" />
    </federationConfiguration>
</system.identityModel.services>
0 голосов
/ 18 января 2020

Есть два шага, где Я думал, это может go неправильно:

  1. URL-адрес Acs в сгенерированном AuthnRequest неверен. Пожалуйста, проверьте отображаемый контент XML на StubIdp, чтобы увидеть, правильно ли он отражает каталог под-приложения. Если нет, то это ошибка или отсутствующая функция в пакете Sustainsys.Saml2. Mvc.
  2. Приложение не правильно вызывает контроллер MVC, встроенный в пакет Sustainsys. Mvc при развертывании в подкаталог. Вы можете проверить это, нажав http://yoursite.com/SubDir/Saml2 - если он работает, он должен вернуть метаданные XML. В этом случае вам необходимо просмотреть конфигурацию маршрута в приложении, чтобы убедиться, что путь правильно направлен к контроллеру в пакете MVC.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...