ขณะนี้ฉันมี Shib SP (v3) ที่ทำงานเพื่อปกป้องเว็บไซต์ เรียกมันว่า site1.example.com
. สมมติว่า example.com ใช้ IDP ที่เรียก ตัวอย่าง1_auth
และมันก็ทำงานตามที่คาดไว้ ฉันมีเว็บไซต์อื่นๆ บนเซิร์ฟเวอร์เดียวกัน ซึ่งแยกจากกันโดยสิ้นเชิง ตัวอย่าง.คอม
พวกเขามีโดเมนย่อยที่แตกต่างกัน จุดประสงค์ต่างกัน พวกเขาเพียงแค่แบ่งปันทรัพยากรของเซิร์ฟเวอร์ (เรียกเซิร์ฟเวอร์ว่า เซิร์ฟเวอร์1
)
ตอนนี้ฉันต้องกำหนดค่า Shib SP เพื่อป้องกันหนึ่งในเว็บไซต์อื่นๆ เหล่านี้ ให้เรียกไซต์นี้ว่าไซต์อื่น site2.example.com
และจะใช้ ตัวอย่าง2_auth
ในฐานะ IDP
คำถามของฉันคือฉันจะปกป้องไซต์เพิ่มเติมได้อย่างไร ต้องมีการเปลี่ยนแปลงอะไรบ้าง shibboleth2.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>
ส่วนภายในส่วนนี้ แต่ฉันไม่แน่ใจว่าถูกต้อง แต่เอกสารชี้ให้เห็นถึงวิธีที่ดีกว่า แต่ไม่เคยอธิบายอย่างครบถ้วนจริงๆ ว่ามันคืออะไร หรืออย่างน้อยก็จากสิ่งที่ฉันเห็น ฉันพบว่าเอกสารการบรรจบกันไม่มีตัวอย่างที่สมบูรณ์ที่จะไปจาก
ขอโทษสำหรับโพสต์ยาว