forked from docker/midPoint_container
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
New SAML2 authN implementation
SAML2 authentication is now using Shibboleth SP by default. SP embeded in midPoint si also available on a different URL.
Slavek Licehammer
committed
Nov 19, 2020
1 parent
38150cc
commit 827d2cf
Showing
15 changed files
with
472 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
demo/shibboleth/configs-and-secrets/midpoint/httpd/00-shib.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so |
14 changes: 14 additions & 0 deletions
14
demo/shibboleth/configs-and-secrets/midpoint/httpd/midpoint-shib.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<Location /midpoint/auth/shib> | ||
AuthType shibboleth | ||
ShibRequestSetting requireSession 1 | ||
ShibRequireSession on | ||
ShibUseHeaders On | ||
require shibboleth | ||
</Location> | ||
|
||
<Location /> | ||
AuthType shibboleth | ||
ShibRequestSetting requireSession false | ||
ShibUseHeaders On | ||
require shibboleth | ||
</Location> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
RewriteRule "^/midpoint/$" "/midpoint/auth/shib" [R] |
168 changes: 168 additions & 0 deletions
168
demo/shibboleth/configs-and-secrets/midpoint/shibboleth/attribute-map.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
<Attributes xmlns="urn:mace:shibboleth:2.0:attribute-map" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
|
||
<!-- | ||
The mappings are a mix of SAML 1.1 and SAML 2.0 attribute names agreed to within the Shibboleth | ||
community. The non-OID URNs are SAML 1.1 names and most of the OIDs are SAML 2.0 names, with a | ||
few exceptions for newer attributes where the name is the same for both versions. You will | ||
usually want to uncomment or map the names for both SAML versions as a unit. | ||
--> | ||
|
||
<!-- New standard identifier attributes for SAML. --> | ||
|
||
<Attribute name="urn:oasis:names:tc:SAML:attribute:subject-id" id="subject-id"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
|
||
<Attribute name="urn:oasis:names:tc:SAML:attribute:pairwise-id" id="pairwise-id"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
|
||
<!-- The most typical eduPerson attributes. --> | ||
|
||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" id="eppn"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonPrincipalName" id="eppn"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
|
||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" id="affiliation"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" id="affiliation"> | ||
<AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
|
||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" id="entitlement"/> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonEntitlement" id="entitlement"/> | ||
|
||
<!-- | ||
Legacy pairwise identifier attribute / NameID format, intended to be replaced by the | ||
simpler pairwise-id attribute (see top of file). | ||
--> | ||
|
||
<!-- The eduPerson attribute version (note the OID-style name): --> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" id="persistent-id"> | ||
<AttributeDecoder xsi:type="NameIDAttributeDecoder" formatter="$NameQualifier!$SPNameQualifier!$Name" defaultQualifiers="true"/> | ||
</Attribute> | ||
|
||
<!-- The SAML 2.0 NameID Format: --> | ||
<Attribute name="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" id="persistent-id"> | ||
<AttributeDecoder xsi:type="NameIDAttributeDecoder" formatter="$NameQualifier!$SPNameQualifier!$Name" defaultQualifiers="true"/> | ||
</Attribute> | ||
|
||
<!-- Other eduPerson attributes (SAML 2 names followed by SAML 1 names)... --> | ||
<!-- | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" id="assurance"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.5.1.1" id="member"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.6.1.1" id="eduCourseOffering"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.6.1.2" id="eduCourseMember"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" id="unscoped-affiliation"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.5" id="primary-affiliation"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.2" id="nickname"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.8" id="primary-orgunit-dn"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.4" id="orgunit-dn"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.3" id="org-dn"/> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonAffiliation" id="unscoped-affiliation"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonPrimaryAffiliation" id="primary-affiliation"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonNickname" id="nickname"/> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN" id="primary-orgunit-dn"/> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonOrgUnitDN" id="orgunit-dn"/> | ||
<Attribute name="urn:mace:dir:attribute-def:eduPersonOrgDN" id="org-dn"/> | ||
--> | ||
|
||
<!-- Older LDAP-defined attributes (SAML 2.0 names followed by SAML 1 names)... --> | ||
<!-- | ||
<Attribute name="urn:oid:2.5.4.3" id="cn"/> | ||
<Attribute name="urn:oid:2.5.4.4" id="sn"/> | ||
<Attribute name="urn:oid:2.5.4.42" id="givenName"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.241" id="displayName"/> | ||
--> | ||
<Attribute name="urn:oid:0.9.2342.19200300.100.1.1" id="uid"/> | ||
<!-- | ||
<Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/> | ||
<Attribute name="urn:oid:2.5.4.20" id="telephoneNumber"/> | ||
<Attribute name="urn:oid:2.5.4.12" id="title"/> | ||
<Attribute name="urn:oid:2.5.4.43" id="initials"/> | ||
<Attribute name="urn:oid:2.5.4.13" id="description"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.1" id="carLicense"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.2" id="departmentNumber"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.3" id="employeeNumber"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.4" id="employeeType"/> | ||
<Attribute name="urn:oid:2.16.840.1.113730.3.1.39" id="preferredLanguage"/> | ||
<Attribute name="urn:oid:0.9.2342.19200300.100.1.10" id="manager"/> | ||
<Attribute name="urn:oid:2.5.4.34" id="seeAlso"/> | ||
<Attribute name="urn:oid:2.5.4.23" id="facsimileTelephoneNumber"/> | ||
<Attribute name="urn:oid:2.5.4.9" id="street"/> | ||
<Attribute name="urn:oid:2.5.4.18" id="postOfficeBox"/> | ||
<Attribute name="urn:oid:2.5.4.17" id="postalCode"/> | ||
<Attribute name="urn:oid:2.5.4.8" id="st"/> | ||
<Attribute name="urn:oid:2.5.4.7" id="l"/> | ||
<Attribute name="urn:oid:2.5.4.10" id="o"/> | ||
<Attribute name="urn:oid:2.5.4.11" id="ou"/> | ||
<Attribute name="urn:oid:2.5.4.15" id="businessCategory"/> | ||
<Attribute name="urn:oid:2.5.4.19" id="physicalDeliveryOfficeName"/> | ||
<Attribute name="urn:mace:dir:attribute-def:cn" id="cn"/> | ||
<Attribute name="urn:mace:dir:attribute-def:sn" id="sn"/> | ||
<Attribute name="urn:mace:dir:attribute-def:givenName" id="givenName"/> | ||
<Attribute name="urn:mace:dir:attribute-def:displayName" id="displayName"/> | ||
<Attribute name="urn:mace:dir:attribute-def:uid" id="uid"/> | ||
<Attribute name="urn:mace:dir:attribute-def:mail" id="mail"/> | ||
<Attribute name="urn:mace:dir:attribute-def:telephoneNumber" id="telephoneNumber"/> | ||
<Attribute name="urn:mace:dir:attribute-def:title" id="title"/> | ||
<Attribute name="urn:mace:dir:attribute-def:initials" id="initials"/> | ||
<Attribute name="urn:mace:dir:attribute-def:description" id="description"/> | ||
<Attribute name="urn:mace:dir:attribute-def:carLicense" id="carLicense"/> | ||
<Attribute name="urn:mace:dir:attribute-def:departmentNumber" id="departmentNumber"/> | ||
<Attribute name="urn:mace:dir:attribute-def:employeeNumber" id="employeeNumber"/> | ||
<Attribute name="urn:mace:dir:attribute-def:employeeType" id="employeeType"/> | ||
<Attribute name="urn:mace:dir:attribute-def:preferredLanguage" id="preferredLanguage"/> | ||
<Attribute name="urn:mace:dir:attribute-def:manager" id="manager"/> | ||
<Attribute name="urn:mace:dir:attribute-def:seeAlso" id="seeAlso"/> | ||
<Attribute name="urn:mace:dir:attribute-def:facsimileTelephoneNumber" id="facsimileTelephoneNumber"/> | ||
<Attribute name="urn:mace:dir:attribute-def:street" id="street"/> | ||
<Attribute name="urn:mace:dir:attribute-def:postOfficeBox" id="postOfficeBox"/> | ||
<Attribute name="urn:mace:dir:attribute-def:postalCode" id="postalCode"/> | ||
<Attribute name="urn:mace:dir:attribute-def:st" id="st"/> | ||
<Attribute name="urn:mace:dir:attribute-def:l" id="l"/> | ||
<Attribute name="urn:mace:dir:attribute-def:o" id="o"/> | ||
<Attribute name="urn:mace:dir:attribute-def:ou" id="ou"/> | ||
<Attribute name="urn:mace:dir:attribute-def:businessCategory" id="businessCategory"/> | ||
<Attribute name="urn:mace:dir:attribute-def:physicalDeliveryOfficeName" id="physicalDeliveryOfficeName"/> | ||
--> | ||
|
||
<!-- SCHAC attributes... --> | ||
<!-- | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.9" id="schacHomeOrganization"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.10" id="schacHomeOrganizationType"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.14" id="schacPersonalUniqueCode"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.15" id="schacPersonalUniqueID"/> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.19" id="schacUserStatus"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.20" id="schacProjectMembership"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
<Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.21" id="schacProjectSpecificRole"> | ||
<AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/> | ||
</Attribute> | ||
--> | ||
|
||
</Attributes> |
112 changes: 112 additions & 0 deletions
112
demo/shibboleth/configs-and-secrets/midpoint/shibboleth/shibboleth2.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
<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" /> | ||
|
||
<!-- | ||
By default, in-memory StorageService, ReplayCache, ArtifactMap, and SessionCache | ||
are used. See example-shibboleth2.xml for samples of explicitly configuring them. | ||
--> | ||
|
||
<!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. --> | ||
<ApplicationDefaults entityID="https://idptestbed/sp/shibboleth" | ||
REMOTE_USER="uid" | ||
cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1"> | ||
|
||
<!-- | ||
Controls session lifetimes, address checks, cookie handling, and the protocol handlers. | ||
Each Application has an effectively unique handlerURL, which defaults to "/Shibboleth.sso" | ||
and should be a relative path, with the SP computing the full value based on the virtual | ||
host. Using handlerSSL="true" will force the protocol to be https. You should also set | ||
cookieProps to "https" for SSL-only sites. Note that while we default checkAddress to | ||
"false", this makes an assertion stolen in transit easier for attackers to misuse. | ||
--> | ||
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem" | ||
checkAddress="false" handlerSSL="false" cookieProps="http" | ||
redirectLimit="exact"> | ||
|
||
<!-- | ||
Configures SSO for a default IdP. To properly allow for >1 IdP, remove | ||
entityID property and adjust discoveryURL to point to discovery service. | ||
You can also override entityID on /Login query string, or in RequestMap/htaccess. | ||
--> | ||
<SSO entityID="https://idptestbed/idp/shibboleth"> | ||
SAML2 | ||
</SSO> | ||
|
||
<!-- SAML and local-only logout. --> | ||
<Logout>SAML2 Local</Logout> | ||
|
||
<!-- Administrative logout. --> | ||
<LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 ::1" /> | ||
|
||
<!-- Extension service that generates "approximate" metadata based on SP configuration. --> | ||
<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/> | ||
|
||
<!-- Status reporting service. --> | ||
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1"/> | ||
|
||
<!-- Session diagnostic service. --> | ||
<Handler type="Session" Location="/Session" showAttributeValues="false"/> | ||
|
||
<!-- JSON feed of discovery information. --> | ||
<Handler type="DiscoveryFeed" Location="/DiscoFeed"/> | ||
</Sessions> | ||
|
||
<!-- | ||
Allows overriding of error template information/filenames. You can | ||
also add your own attributes with values that can be plugged into the | ||
templates, e.g., helpLocation below. | ||
--> | ||
<Errors supportContact="root@localhost" | ||
helpLocation="/about.html" | ||
styleSheet="/shibboleth-sp/main.css"/> | ||
|
||
<!-- Example of locally maintained metadata. --> | ||
<MetadataProvider type="XML" validate="true" path="/etc/shibboleth/idp-metadata.xml"/> | ||
|
||
<!-- Example of remotely supplied batch of signed metadata. --> | ||
<!-- | ||
<MetadataProvider type="XML" validate="true" | ||
url="http://federation.org/federation-metadata.xml" | ||
backingFilePath="federation-metadata.xml" maxRefreshDelay="7200"> | ||
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/> | ||
<MetadataFilter type="Signature" certificate="fedsigner.pem" verifyBackup="false"/> | ||
<DiscoveryFilter type="Blacklist" matcher="EntityAttributes" trimTags="true" | ||
attributeName="http://macedir.org/entity-category" | ||
attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||
attributeValue="http://refeds.org/category/hide-from-discovery" /> | ||
</MetadataProvider> | ||
--> | ||
|
||
<!-- Example of remotely supplied "on-demand" signed metadata. --> | ||
<!-- | ||
<MetadataProvider type="MDQ" validate="true" cacheDirectory="mdq" | ||
baseUrl="http://mdq.federation.org" ignoreTransport="true"> | ||
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/> | ||
<MetadataFilter type="Signature" certificate="mdqsigner.pem" /> | ||
</MetadataProvider> | ||
--> | ||
|
||
<!-- 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"/> | ||
|
||
</ApplicationDefaults> | ||
|
||
<!-- Policies that determine how to process and authenticate runtime messages. --> | ||
<SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/> | ||
|
||
<!-- Low-level configuration about protocols and bindings available for use. --> | ||
<ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/> | ||
|
||
</SPConfig> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.