Ошибка 500 при попытке доступа к метаданным Shibboleth SP

Я пытаюсь настроить Shibboleth SP с помощью IdP samltest.id. Моя установка выглядит следующим образом:

Windows Server 2008 R2, IIS7.5, Shibboleth SP 3.0

У меня почти все работает - при попытке доступа к защищенным страницам он правильно перенаправляет пользователя на страницу samltest, и samltest выдает правильную ошибку "Служба веб-входа - неподдерживаемый запрос", поскольку я не настроил свой SP с samltest.

Я пытаюсь использовать https://samltest.id/upload.php для загрузки своей конфигурации, но на данный момент я бью стену. Опция извлечения не работает вообще, и я уверен, что это потому, что файл метаданных просто не генерируется. Попытка сгенерировать указанный файл из https://{MySite}/Shibboleth.sso/Metadata выдает ошибку 500, и я нигде не могу найти информацию, чтобы сказать мне, почему это происходит.

Я проверил Windows Event Viewer, IIS LogFiles, файл журнала shibd - ничто не указывает на то, что я сделал неправильно.

Вот урезанная версия моего файла shibboleth.xml на случай, если я что-то упущу из виду:

<SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config" clockSkew="180">
<OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />
<InProcess>
    <ISAPI normalizeRequest="true" safeHeaderNames="true">
        <Site id="{MySiteID}" name="{MySite}" scheme="https" port="443"/>
    </ISAPI>
</InProcess>
<RequestMapper type="Native">
    <RequestMap>
        <Host name="{MySite}">
            <Path name="content" authType="shibboleth" requireSession="true"/>
        </Host>
    </RequestMap>
</RequestMapper>
<ApplicationDefaults entityID="https://{MySite}/shibboleth" REMOTE_USER="eppn subject-id pairwise-id persistent-id" cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
    <Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="true" handlerSSL="true" cookieProps="https">
        <SSO entityID="https://samltest.id/saml/idp">SAML2</SSO>
        <Logout>SAML2 Local</Logout>
    </Sessions>
    <Errors supportContact="{MyEmail}" helpLocation="/error.aspx" styleSheet="/styles/style.css"/>
<MetadataProvider type="XML" validate="true" url="https://samltest.id/saml/idp" backingFilePath="SAMLtest.xml"></MetadataProvider>          
    <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
    <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
    <CredentialResolver type="File" use="signing" key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>
    <CredentialResolver type="File" use="encryption" key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/>
</ApplicationDefaults>
<SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>
<ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>

Если у кого-нибудь есть какой-нибудь совет о том, где я могу посмотреть, я бы с удовольствием.

2 ответа

Решение

Для любого, кто сталкивается с этим вопросом, есть куча "Конечно" вещей, которые я пропустил.

Начнем с того, что страницы Shibboleth.sso доступны только внутри самого сервера. Я пытался получить к ним доступ извне, и по умолчанию внешние запросы к этим страницам блокируются.

Когда я попытался получить к ним доступ изнутри сервера, я получил другую ошибку - "Обработчик Shibboleth вызван в ненастроенном месте". Причина этого заключается в том, что в моем файле shibboleth2.xml у меня не было сопоставлений обработчиков для путей, к которым я пытался получить доступ. Например, страница /Metadata требует отображения обработчика, такого как:

<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>

(не совсем уверен, что делает запись signature ="false", я просто оставил все как есть)

Я получил это, когда у меня был включен SELinux (установка на RHEL8). Симптомы: ошибка 500 от Apache, журналы shibd не записывают входящие запросы. (Как ни странно, URL-адрес /Shibboleth.sso/Session действительно работал)

Проверьте журналы в /var/log/audit, установите SELINUX=permissive в /etcv/selinux/config (+reboot), чтобы увидеть, не в этом ли проблема.

Другие вопросы по тегам