В настоящее время у меня работает Shib SP (v3) для защиты веб-сайта. site1.example.com
. Допустим, example.com использует IDP с именем example1_auth
и он работает, как и ожидалось. У меня есть другие сайты на том же сервере, они полностью отделены от пример.com
у них разные субдомены, разные цели, они просто делят ресурсы сервера (назовем сервер сервер1
)
Теперь мне нужно настроить Shib SP для защиты одного из этих других веб-сайтов, давайте позвоним этому другому сайту. site2.example.com
и он будет использовать example2_auth
как его внутренне перемещенное лицо
У меня вопрос, как мне защитить дополнительный сайт, какие изменения необходимы для шибболет2.xml
файл и атрибут-map.xml
Насколько я понимаю, мне нужно сделать как минимум следующее
Добавьте дополнительный сайт в <InProcess>
раздел
<InProcess>
<ISAPI normalizeRequest="true" safeHeaderNames="true">
<Site id="5" name="site1.example.com" scheme="https" port="443"/>
<Site id="15" name="site2.example.com" scheme="https" port="443"/> <!--New-->
</ISAPI>
</InProcess>
Добавьте дополнительный хост в <RequestMapper>
раздел, чтобы это выглядело примерно так
<RequestMapper type="Native">
<RequestMap>
<Host name="site1.example.com" port="443" scheme="https">
<Path name="secure" authType="shibboleth" requireSession="true"/>
</Host>
<!--New-->
<Host name="site2.example.com" port="443" scheme="https">
<Path name="secure" authType="shibboleth" requireSession="true"/>
</Host>
</RequestMap>
</RequestMapper>
Предполагая, что эти части верны. Какие изменения здесь требуются?
<ApplicationDefaults entityID="https://site1.example.com/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" checkAddress="false" relayState="cookie" handlerSSL="false" cookieProps="; HttpOnly; path=/; secure" >
<SSO entityID="site1_auth">
SAML2 SAML1
</SSO>
<Logout>SAML2 Local</Logout>
<LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 ::1" />
<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>
</Sessions>
<MetadataProvider type="XML" validate="true" path="C:\opt\SSO_Metadata\site1.xml"/>
<MetadataProvider type="XML" validate="true" path="C:\opt\SSO_Metadata\site2.xml"/>
<!-- Map to extract attributes from SAML assertions. -->
<AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
<!-- Default filtering policy for recognized attributes, lets other data pass. -->
<AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
<!-- Simple file-based resolvers for separate signing/encryption keys. -->
<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"/>
Я думаю, мне нужно добавить <ApplicationOverride>
раздел в этой части, но я не уверен, что это правильно, но документация указывает на лучший способ, но никогда не полностью объясняет, что это может быть, или, по крайней мере, из того, что я видел. Я считаю, что в документации по слиянию отсутствуют полноценные примеры.
Извиняюсь за длинный пост