În prezent, am Shib SP (v3) care rulează pentru a proteja un site web, să-l sunăm site1.example.com
. Să spunem example.com folosește un IDP numit exemplu1_auth
și funcționează conform așteptărilor. Am alte site-uri pe același server, sunt complet separate de ele exemplu.com
au subdomenii diferite, scopuri diferite, doar partajează resursele serverului (Să apelăm serverul server1
)
Acum trebuie să configurez Shib SP pentru a proteja unul dintre aceste alte site-uri web, să numim acest alt site site2.example.com
si va folosi exemplu2_auth
ca IDP al acestuia
Întrebarea mea este cum protejez site-ul suplimentar, ce modificări sunt necesare pentru shibboleth2.xml
dosar și attribute-map.xml
Din câte am înțeles, trebuie să fac cel puțin următoarele
Adăugați un site suplimentar la <InProcess>
secțiune
<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>
Adăugați o gazdă suplimentară la <RequestMapper>
secțiune, așa că ar arăta cam așa
<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>
Presupunând că acele părți sunt corecte. Ce modificări sunt necesare aici?
<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"/>
Cred că trebuie să adaug un <ApplicationOverride>
secțiunea din această parte, dar nu sunt sigur că este corect, dar documentația indică o modalitate mai bună, dar niciodată complet explică pe deplin ce ar putea fi, sau cel puțin din ceea ce am văzut. Găsesc că documentația de confluență nu are exemple de la care să plece.
Scuze pentru postarea lungă