import
This commit is contained in:
		
							
								
								
									
										9
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | bin | ||||||
|  | credentials | ||||||
|  | dist | ||||||
|  | doc | ||||||
|  | edit-webapp | ||||||
|  | flows | ||||||
|  | logs | ||||||
|  | views | ||||||
|  | war | ||||||
							
								
								
									
										68
									
								
								conf/access-control.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								conf/access-control.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Map of access control policies used to limit access to administrative functions. | ||||||
|  |     The purpose of the map is to label policies with a key/name so they can be reused. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Use the "shibboleth.IPRangeAccessControl" parent bean for IP-based access control. | ||||||
|  |     The ranges provided MUST be CIDR network expressions. To specify a single address, | ||||||
|  |     add "/32" or "/128" for IPv4 or IPv6 respectively. | ||||||
|  |  | ||||||
|  |     The additional examples below demonstrate how to control access by username | ||||||
|  |     and by attribute(s), in the case of authenticated access to admin functions. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <util:map id="shibboleth.AccessControlPolicies"> | ||||||
|  |      | ||||||
|  |         <entry key="AccessByIPAddress"> | ||||||
|  |             <bean id="AccessByIPAddress" parent="shibboleth.IPRangeAccessControl" | ||||||
|  |                 p:allowedRanges="#{ {'127.0.0.1/32', '::1/128'} }" /> | ||||||
|  |         </entry> | ||||||
|  |          | ||||||
|  |         <!-- | ||||||
|  |         <entry key="AccessByAdminUser"> | ||||||
|  |             <bean parent="shibboleth.PredicateAccessControl"> | ||||||
|  |                 <constructor-arg> | ||||||
|  |                     <bean parent="shibboleth.Conditions.SubjectName" c:collection="#{'jdoe'}" /> | ||||||
|  |                 </constructor-arg> | ||||||
|  |             </bean> | ||||||
|  |         </entry> | ||||||
|  |         --> | ||||||
|  |          | ||||||
|  |         <!-- | ||||||
|  |         <entry key="AccessByAttribute"> | ||||||
|  |             <bean parent="shibboleth.PredicateAccessControl"> | ||||||
|  |                 <constructor-arg> | ||||||
|  |                     <bean class="net.shibboleth.idp.profile.logic.SimpleAttributePredicate"> | ||||||
|  |                         <property name="attributeValueMap"> | ||||||
|  |                             <map> | ||||||
|  |                                 <entry key="eduPersonEntitlement"> | ||||||
|  |                                     <list> | ||||||
|  |                                         <value>https://example.org/entitlement/idpadmin</value> | ||||||
|  |                                     </list> | ||||||
|  |                                 </entry> | ||||||
|  |                             </map> | ||||||
|  |                         </property> | ||||||
|  |                     </bean> | ||||||
|  |                 </constructor-arg> | ||||||
|  |             </bean> | ||||||
|  |         </entry> | ||||||
|  |         --> | ||||||
|  |      | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										73
									
								
								conf/admin/admin.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								conf/admin/admin.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | # Configure properties controlling administrative features | ||||||
|  |  | ||||||
|  | #idp.status.logging = Status | ||||||
|  | #idp.status.accessPolicy = AccessByIPAddress | ||||||
|  | #idp.status.authenticated = false | ||||||
|  | #idp.status.nonBrowserSupported = false | ||||||
|  | #idp.status.defaultAuthenticationMethods = | ||||||
|  | #idp.status.resolveAttributes = false | ||||||
|  | #idp.status.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.reload.logging = Reload | ||||||
|  | #idp.reload.accessPolicy = AccessByIPAddress | ||||||
|  | #idp.reload.authenticated = false | ||||||
|  | #idp.reload.nonBrowserSupported = false | ||||||
|  | #idp.reload.defaultAuthenticationMethods = | ||||||
|  | #idp.reload.resolveAttributes = false | ||||||
|  | #idp.reload.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.resolvertest.logging = ResolverTest | ||||||
|  | #idp.resolvertest.accessPolicy = AccessByIPAddress | ||||||
|  | #idp.resolvertest.authenticated = false | ||||||
|  | #idp.resolvertest.nonBrowserSupported = false | ||||||
|  | #idp.resolvertest.defaultAuthenticationMethods = | ||||||
|  | #idp.resolvertest.resolveAttributes = false | ||||||
|  | #idp.resolvertest.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.mdquery.logging = MetadataQuery | ||||||
|  | #idp.mdquery.accessPolicy = AccessByIPAddress | ||||||
|  | #idp.mdquery.authenticated = false | ||||||
|  | #idp.mdquery.nonBrowserSupported = false | ||||||
|  | #idp.mdquery.defaultAuthenticationMethods = | ||||||
|  | #idp.mdquery.resolveAttributes = false | ||||||
|  | #idp.mdquery.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.metrics.logging = Metrics | ||||||
|  | #idp.metrics.authenticated = false | ||||||
|  | #idp.metrics.nonBrowserSupported = false | ||||||
|  | #idp.metrics.defaultAuthenticationMethods = | ||||||
|  | #idp.metrics.resolveAttributes = false | ||||||
|  | #idp.metrics.postAuthenticationFlows = | ||||||
|  | # See admin/metrics.xml for other configuration | ||||||
|  |  | ||||||
|  | #idp.hello.logging = Hello | ||||||
|  | #idp.hello.accessPolicy = AccessByAdminUser | ||||||
|  | #idp.hello.authenticated = true | ||||||
|  | #idp.hello.nonBrowserSupported = false | ||||||
|  | #idp.hello.defaultAuthenticationMethods = | ||||||
|  | #idp.hello.resolveAttributes = true | ||||||
|  | #idp.hello.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.lockout.logging = Lockout | ||||||
|  | #idp.lockout.accessPolicy = AccessDenied | ||||||
|  | #idp.lockout.authenticated = false | ||||||
|  | #idp.lockout.nonBrowserSupported = false | ||||||
|  | #idp.lockout.defaultAuthenticationMethods = | ||||||
|  | #idp.lockout.resolveAttributes = false | ||||||
|  | #idp.lockout.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.storage.logging = Storage | ||||||
|  | #idp.storage.accessPolicy = AccessDenied | ||||||
|  | #idp.storage.authenticated = false | ||||||
|  | #idp.storage.nonBrowserSupported = false | ||||||
|  | #idp.storage.defaultAuthenticationMethods = | ||||||
|  | #idp.storage.resolveAttributes = false | ||||||
|  | #idp.storage.postAuthenticationFlows = | ||||||
|  |  | ||||||
|  | #idp.unlock-keys.logging = UnlockKeys | ||||||
|  | #idp.unlock-keys.accessPolicy = AccessDenied | ||||||
|  | #idp.unlock-keys.authenticated = true | ||||||
|  | #idp.unlock-keys.nonBrowserSupported = false | ||||||
|  | #idp.unlock-keys.defaultAuthenticationMethods = | ||||||
|  | #idp.unlock-keys.resolveAttributes = false | ||||||
|  | #idp.unlock-keys.postAuthenticationFlows = | ||||||
							
								
								
									
										142
									
								
								conf/admin/metrics.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								conf/admin/metrics.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |     xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |     xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |     xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |  | ||||||
|  |     default-init-method="initialize" | ||||||
|  |     default-destroy-method="destroy"> | ||||||
|  |      | ||||||
|  |     <!-- Metrics enablement / activation. --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Register one or more of the built-in system metric sets available. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <bean parent="shibboleth.metrics.RegisterMetricSets"> | ||||||
|  |         <property name="arguments"> | ||||||
|  |             <list> | ||||||
|  |                 <ref bean="shibboleth.metrics.CoreGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.IdPGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.LoggingGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.AccessControlGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.MetadataGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.NameIdentifierGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.RelyingPartyGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.AttributeRegistryGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.AttributeResolverGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.AttributeFilterGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.CASServiceRegistryGaugeSet" /> | ||||||
|  |                 <ref bean="shibboleth.metrics.ManagedBeanGaugeSet" /> | ||||||
|  |  | ||||||
|  |                 <!-- | ||||||
|  |                 <bean class="com.codahale.metrics.jvm.CachedThreadStatesGaugeSet" | ||||||
|  |                     c:_0="1" c:_1="#{T(java.util.concurrent.TimeUnit).MINUTES}" /> | ||||||
|  |                 <bean class="com.codahale.metrics.jvm.ClassLoadingGaugeSet" /> | ||||||
|  |                 <bean class="com.codahale.metrics.jvm.GarbageCollectorMetricSet" /> | ||||||
|  |                 <bean class="com.codahale.metrics.jvm.MemoryUsageGaugeSet" /> | ||||||
|  |                 --> | ||||||
|  |             </list> | ||||||
|  |         </property> | ||||||
|  |     </bean> | ||||||
|  |  | ||||||
|  |     <!-- Metrics REST API Configuration --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     The global metric set is available by default at /idp/profile/admin/metrics | ||||||
|  |      | ||||||
|  |     Any pathinfo after that is assumed to identify specific named metrics. You can | ||||||
|  |     create mappings here between a logical "group" name and an implementation of the | ||||||
|  |     com.codahale.metrics.MetricFilter interface to specify which metrics to include. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.metrics.MetricGroups"> | ||||||
|  |         <entry key="core" value-ref="shibboleth.metrics.CoreGaugeSet" /> | ||||||
|  |         <entry key="idp" value-ref="shibboleth.metrics.IdPGaugeSet" /> | ||||||
|  |         <entry key="logging" value-ref="shibboleth.metrics.LoggingGaugeSet" /> | ||||||
|  |         <entry key="access" value-ref="shibboleth.metrics.AccessControlGaugeSet" /> | ||||||
|  |         <entry key="metadata" value-ref="shibboleth.metrics.MetadataGaugeSet" /> | ||||||
|  |         <entry key="nameid" value-ref="shibboleth.metrics.NameIdentifierGaugeSet" /> | ||||||
|  |         <entry key="relyingparty" value-ref="shibboleth.metrics.RelyingPartyGaugeSet" /> | ||||||
|  |         <entry key="registry" value-ref="shibboleth.metrics.AttributeRegistryGaugeSet" /> | ||||||
|  |         <entry key="resolver" value-ref="shibboleth.metrics.AttributeResolverGaugeSet" /> | ||||||
|  |         <entry key="filter" value-ref="shibboleth.metrics.AttributeFilterGaugeSet" /> | ||||||
|  |         <entry key="cas" value-ref="shibboleth.metrics.CASServiceRegistryGaugeSet" /> | ||||||
|  |         <entry key="bean" value-ref="shibboleth.metrics.ManagedBeanGaugeSet" /> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <!-- Add any desired properties into set to expose them as IdP metrics. --> | ||||||
|  |     <!-- | ||||||
|  |     <util:set id="shibboleth.metrics.ExposedProperties"> | ||||||
|  |         <value>idp.entityID</value> | ||||||
|  |     </util:set> | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- If you don't specify an alternate access policy, this named policy will be enforced. --> | ||||||
|  |     <bean id="shibboleth.metrics.DefaultAccessPolicy" class="java.lang.String" c:_0="AccessByIPAddress" /> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     To override the default access policy, map a metric name or | ||||||
|  |     mapped group above to an alternative policy name. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.metrics.AccessPolicyMap"> | ||||||
|  |      | ||||||
|  |     </util:map> | ||||||
|  |          | ||||||
|  |     <!-- | ||||||
|  |     In addition to the "pull" REST API for accessing metrics, a "push" reporter is also | ||||||
|  |     available to upload a JSON feed to a URL. The example shown relies on standard JVM | ||||||
|  |     trust configuration for TLS server verification. | ||||||
|  |      | ||||||
|  |     The "start" method triggers the timer thread; the example pushes every 30 minutes. | ||||||
|  |     --> | ||||||
|  |     <!-- | ||||||
|  |     <bean id="PushReporter" parent="shibboleth.metrics.HTTPReporter" c:name="MyCollector" | ||||||
|  |         p:collectorURL="https://log.example.org/cgi-bin/collector.cgi" /> | ||||||
|  |                  | ||||||
|  |     <bean class="org.springframework.beans.factory.config.MethodInvokingBean" | ||||||
|  |             p:targetObject-ref="PushReporter" | ||||||
|  |             p:targetMethod="start"> | ||||||
|  |         <property name="arguments"> | ||||||
|  |             <list> | ||||||
|  |                 <value>30</value> | ||||||
|  |                 <util:constant static-field="java.util.concurrent.TimeUnit.MINUTES" /> | ||||||
|  |             </list> | ||||||
|  |         </property> | ||||||
|  |     </bean> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- IdP Metrics Configuration --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     A bean named shibboleth.metrics.MetricStrategy of type Function<ProfileRequestContext,Boolean> | ||||||
|  |     can be defined to add timers and counters to a large range of objects in the system. Each timer is | ||||||
|  |     defined by a triple (timer name, start object, stop object). Counters are just object/counter pairs. | ||||||
|  |      | ||||||
|  |     The most common example is to start a timer when a particular flow action bean starts and | ||||||
|  |     stop it when the same or different action bean stops, to measure how long the execution takes. | ||||||
|  |      | ||||||
|  |     If you want to leave a timer in place but disabled to prevent overhead, you can turn off a | ||||||
|  |     logging category named "metrics.<timername>" in your logging configuration. | ||||||
|  |     --> | ||||||
|  |     <!-- | ||||||
|  |     <bean id="shibboleth.metrics.MetricStrategy" parent="shibboleth.ContextFunctions.Scripted" | ||||||
|  |             factory-method="inlineScript"> | ||||||
|  |         <constructor-arg> | ||||||
|  |             <value> | ||||||
|  |             <![CDATA[ | ||||||
|  |                 metricCtx = input.getSubcontext("org.opensaml.profile.context.MetricContext"); | ||||||
|  |                 metricCtx.addTimer("idp.attribute.resolution", | ||||||
|  |                     "ResolveAttributes", | ||||||
|  |                     "FilterAttributes" | ||||||
|  |                     );                                 | ||||||
|  |                 true; // Signals success. | ||||||
|  |             ]]> | ||||||
|  |             </value> | ||||||
|  |         </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										104
									
								
								conf/attribute-filter.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								conf/attribute-filter.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!--  | ||||||
|  |     This file is an EXAMPLE policy file.  While the policy presented in this  | ||||||
|  |     example file is illustrative of some simple cases, it relies on the names of | ||||||
|  |     non-existent example services and the example attributes demonstrated in the | ||||||
|  |     default attribute-resolver.xml file. | ||||||
|  |  | ||||||
|  |     This example does contain some usable "general purpose" policies that may be | ||||||
|  |     useful in conjunction with specific deployment choices, but those policies may | ||||||
|  |     not be applicable to your specific needs or constraints.     | ||||||
|  | --> | ||||||
|  | <AttributeFilterPolicyGroup id="ShibbolethFilterPolicy" | ||||||
|  |         xmlns="urn:mace:shibboleth:2.0:afp" | ||||||
|  |         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |         xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd"> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- Release home org signifier to everybody. --> | ||||||
|  |     <AttributeFilterPolicy id="alwaysRelease"> | ||||||
|  |         <PolicyRequirementRule xsi:type="ANY" /> | ||||||
|  |          | ||||||
|  |         <AttributeRule attributeID="schacHomeOrganization" permitAny="true" /> | ||||||
|  |     </AttributeFilterPolicy> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Example rule relying on a locally applied tag in metadata to trigger attribute | ||||||
|  |     release of some specific attributes. Add additional attributes as desired. | ||||||
|  |     --> | ||||||
|  | 	<AttributeFilterPolicy id="Per-Attribute-singleValued"> | ||||||
|  | 	    <PolicyRequirementRule xsi:type="ANY" /> | ||||||
|  | 	  | ||||||
|  | 	    <AttributeRule attributeID="eduPersonPrincipalName"> | ||||||
|  | 	        <PermitValueRule xsi:type="EntityAttributeExactMatch" | ||||||
|  | 	            attributeName="http://shibboleth.net/ns/attributes/releaseAllValues" | ||||||
|  | 	            attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  | 	            attributeValue="eduPersonPrincipalName" /> | ||||||
|  | 	    </AttributeRule> | ||||||
|  | 	  | ||||||
|  | 	    <AttributeRule attributeID="mail"> | ||||||
|  | 	        <PermitValueRule xsi:type="EntityAttributeExactMatch" | ||||||
|  | 	            attributeName="http://shibboleth.net/ns/attributes/releaseAllValues" | ||||||
|  | 	            attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  | 	            attributeValue="mail" /> | ||||||
|  | 	    </AttributeRule> | ||||||
|  | 	</AttributeFilterPolicy> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Same as above but more efficient form for an attribute with multiple values. | ||||||
|  |     --> | ||||||
|  |     <AttributeFilterPolicy id="Per-Attribute-Affiliation"> | ||||||
|  |         <PolicyRequirementRule xsi:type="EntityAttributeExactMatch" | ||||||
|  |             attributeName="http://shibboleth.net/ns/attributes/releaseAllValues" | ||||||
|  |             attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  |             attributeValue="eduPersonScopedAffiliation" /> | ||||||
|  |       | ||||||
|  |         <AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true" /> | ||||||
|  |     </AttributeFilterPolicy> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Example rule for honoring Subject ID requirement tag in metadata. | ||||||
|  |     The example supplies pairwise-id if subject-id isn't explicitly required. | ||||||
|  |     --> | ||||||
|  |     <AttributeFilterPolicy id="subject-identifiers"> | ||||||
|  |         <PolicyRequirementRule xsi:type="ANY" /> | ||||||
|  |  | ||||||
|  |         <AttributeRule attributeID="samlPairwiseID"> | ||||||
|  |             <PermitValueRule xsi:type="OR"> | ||||||
|  |                 <Rule xsi:type="EntityAttributeExactMatch" | ||||||
|  |                     attributeName="urn:oasis:names:tc:SAML:profiles:subject-id:req" | ||||||
|  |                     attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  |                     attributeValue="pairwise-id" /> | ||||||
|  |                 <Rule xsi:type="EntityAttributeExactMatch" | ||||||
|  |                     attributeName="urn:oasis:names:tc:SAML:profiles:subject-id:req" | ||||||
|  |                     attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  |                     attributeValue="any" /> | ||||||
|  |             </PermitValueRule> | ||||||
|  |         </AttributeRule> | ||||||
|  |  | ||||||
|  |         <AttributeRule attributeID="samlSubjectID"> | ||||||
|  |             <PermitValueRule xsi:type="EntityAttributeExactMatch" | ||||||
|  |                 attributeName="urn:oasis:names:tc:SAML:profiles:subject-id:req" | ||||||
|  |                 attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | ||||||
|  |                 attributeValue="subject-id" /> | ||||||
|  |         </AttributeRule> | ||||||
|  |     </AttributeFilterPolicy> | ||||||
|  |  | ||||||
|  |     <!-- Release an additional attribute to an SP. --> | ||||||
|  |     <AttributeFilterPolicy id="example1"> | ||||||
|  |         <PolicyRequirementRule xsi:type="Requester" value="https://sp.example.org" /> | ||||||
|  |  | ||||||
|  |         <AttributeRule attributeID="uid" permitAny="true" /> | ||||||
|  |     </AttributeFilterPolicy> | ||||||
|  |  | ||||||
|  |     <!-- Release eduPersonScopedAffiliation to two specific SPs. --> | ||||||
|  |     <AttributeFilterPolicy id="example2"> | ||||||
|  |         <PolicyRequirementRule xsi:type="OR"> | ||||||
|  |             <Rule xsi:type="Requester" value="https://sp.example.org" /> | ||||||
|  |             <Rule xsi:type="Requester" value="https://another.example.org/shibboleth" /> | ||||||
|  |         </PolicyRequirementRule> | ||||||
|  |  | ||||||
|  |         <AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true" /> | ||||||
|  |     </AttributeFilterPolicy> | ||||||
|  |      | ||||||
|  | </AttributeFilterPolicyGroup> | ||||||
							
								
								
									
										29
									
								
								conf/attribute-registry.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								conf/attribute-registry.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     The system comes preconfigured to load rules directly from resource files | ||||||
|  |     configured in services.xml so they're monitored for changes. | ||||||
|  |      | ||||||
|  |     You can add mappings here, add more XML resource files, or drop property | ||||||
|  |     files into the directory noted below, but they won't be monitored for changes | ||||||
|  |     themselves. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- Default directory for custom mappings. --> | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader" | ||||||
|  |         c:dir="%{idp.home}/conf/attributes/custom" | ||||||
|  |         c:extensions="#{{'.txt', '.props', '.properties', '.rule'}}" /> | ||||||
|  |     | ||||||
|  | </beans> | ||||||
							
								
								
									
										78
									
								
								conf/attribute-resolver.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								conf/attribute-resolver.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!--  | ||||||
|  | This file is a rudimentary example. While it is semi-functional, it isn't very | ||||||
|  | interesting. It is here only as a starting point for your deployment process | ||||||
|  | to avoid any dependency on components like an LDAP directory. | ||||||
|  |  | ||||||
|  | Very few attribute definitions and data connectors are demonstrated, and the | ||||||
|  | data is derived statically from the logged-in username and a static example | ||||||
|  | connector. | ||||||
|  |  | ||||||
|  | The file(s) in the examples directory contain more examples that involve more | ||||||
|  | complex approaches. Deployers should refer to the documentation for a complete | ||||||
|  | list of possible components and their options. | ||||||
|  | --> | ||||||
|  | <AttributeResolver | ||||||
|  |         xmlns="urn:mace:shibboleth:2.0:resolver"  | ||||||
|  |         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  | ||||||
|  |         xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |     <!--      Attribute Definitions                 --> | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     The EPPN is the "standard" federated username in higher ed. | ||||||
|  |     For guidelines on the implementation of this attribute, refer | ||||||
|  |     to the Shibboleth and eduPerson documentation. Above all, do | ||||||
|  |     not expose a value for this attribute without considering the | ||||||
|  |     long term implications.  | ||||||
|  |     --> | ||||||
|  |     <AttributeDefinition id="eduPersonPrincipalName" xsi:type="Scoped" scope="%{idp.scope}"> | ||||||
|  |         <InputAttributeDefinition ref="uid" /> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     The uid is the closest thing to a "standard" LDAP attribute | ||||||
|  |     representing a local username, but you should generally *never* | ||||||
|  |     expose uid to federated services, as it is rarely globally unique. | ||||||
|  |     --> | ||||||
|  |     <AttributeDefinition id="uid" xsi:type="PrincipalName" /> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     In the rest of the world, the email address is the standard identifier, | ||||||
|  |     despite the problems with that practice. Consider making the EPPN | ||||||
|  |     value the same as your official email addresses whenever possible. | ||||||
|  |     --> | ||||||
|  |     <AttributeDefinition id="mail" xsi:type="Template"> | ||||||
|  |         <InputAttributeDefinition ref="uid" /> | ||||||
|  |         <Template> | ||||||
|  |           <![CDATA[ | ||||||
|  |                ${uid}@example.org | ||||||
|  |           ]]> | ||||||
|  |         </Template> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     This is an example of an attribute sourced from a data connector. | ||||||
|  |     --> | ||||||
|  |     <AttributeDefinition id="eduPersonScopedAffiliation" xsi:type="Scoped" scope="%{idp.scope}"> | ||||||
|  |         <InputDataConnector ref="staticAttributes" attributeNames="affiliation" /> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |     <!--      Data Connectors                       --> | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |  | ||||||
|  |     <DataConnector id="staticAttributes" xsi:type="Static" exportAttributes="schacHomeOrganization"> | ||||||
|  |         <Attribute id="schacHomeOrganization"> | ||||||
|  |             <Value>%{idp.scope}</Value> | ||||||
|  |         </Attribute> | ||||||
|  |         <Attribute id="affiliation"> | ||||||
|  |             <Value>member</Value> | ||||||
|  |         </Attribute> | ||||||
|  |     </DataConnector> | ||||||
|  |  | ||||||
|  | </AttributeResolver> | ||||||
							
								
								
									
										9
									
								
								conf/attributes/custom/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								conf/attributes/custom/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | # You can create custom attribute mapping rules using | ||||||
|  | # simple property files stored in this directory tree. | ||||||
|  | # Spring property replacement is NOT supported. | ||||||
|  |  | ||||||
|  | # As an example, a default SAML 2 rule for eduPersonPrincipalName would be: | ||||||
|  |  | ||||||
|  | #id=eduPersonPrincipalName | ||||||
|  | #transcoder=SAML2ScopedStringTranscoder | ||||||
|  | #saml2.name=urn:oid:1.3.6.1.4.1.5923.1.1.1.6 | ||||||
							
								
								
									
										29
									
								
								conf/attributes/default-rules.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								conf/attributes/default-rules.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- Default Attribute transcoding rules. --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Many if not most of these attributes are not suited or may even be actively discouraged | ||||||
|  |     from use in federated protocols, but this is merely a set of well-known definitions, not | ||||||
|  |     a recommended set to support or use. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <import resource="inetOrgPerson.xml" /> | ||||||
|  |     <import resource="eduPerson.xml" /> | ||||||
|  |     <import resource="eduCourse.xml" /> | ||||||
|  |     <import resource="schac.xml" /> | ||||||
|  |     <import resource="samlSubject.xml" /> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										57
									
								
								conf/attributes/eduCourse.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								conf/attributes/eduCourse.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Note that all built-in rules rely on URI-naming and thus include the implied settings: | ||||||
|  |      | ||||||
|  |     <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:uri</prop> | ||||||
|  |     <prop key="saml1.namespace">urn:mace:shibboleth:1.0:attributeNamespace:uri</prop> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader"> | ||||||
|  |     <constructor-arg> | ||||||
|  |     <list> | ||||||
|  |          | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduCourseOffering</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.6.1.1</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.5923.1.6.1.1</prop> | ||||||
|  |                     <prop key="displayName.en">Course offering</prop> | ||||||
|  |                     <prop key="description.en">Unique identifier for a course offering</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |          | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduCourseMember</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder CASScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.6.1.2</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.5923.1.6.1.2</prop> | ||||||
|  |                     <prop key="saml1.encodeType">false</prop> | ||||||
|  |                     <prop key="displayName.en">Course role</prop> | ||||||
|  |                     <prop key="description.en">Specifies the person's role within a particular course offering</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |     </list> | ||||||
|  |     </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										273
									
								
								conf/attributes/eduPerson.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										273
									
								
								conf/attributes/eduPerson.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,273 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Note that all built-in rules rely on URI-naming and thus include the implied settings: | ||||||
|  |      | ||||||
|  |     <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:uri</prop> | ||||||
|  |     <prop key="saml1.namespace">urn:mace:shibboleth:1.0:attributeNamespace:uri</prop> | ||||||
|  |     --> | ||||||
|  |         | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader"> | ||||||
|  |     <constructor-arg> | ||||||
|  |     <list> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonAffiliation</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.1</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonAffiliation</prop> | ||||||
|  |                     <prop key="displayName.en">Affiliation</prop> | ||||||
|  |                     <prop key="displayName.de">Zugehörigkeit</prop> | ||||||
|  |                     <prop key="displayName.fr">Affiliation</prop> | ||||||
|  |                     <prop key="displayName.it">Tipo di membro</prop> | ||||||
|  |                     <prop key="displayName.ja">職位</prop> | ||||||
|  |                     <prop key="description.en">Affiliation: Type of affiliation with Home Organization</prop> | ||||||
|  |                     <prop key="description.de">Art der Zugehörigkeit zur Heimatorganisation</prop> | ||||||
|  |                     <prop key="description.de-ch">Art der Zugehörigkeit zur Heimorganisation</prop> | ||||||
|  |                     <prop key="description.fr">Type d'affiliation dans l'organisation</prop> | ||||||
|  |                     <prop key="description.it">Tipo di membro: Tipo di lavoro svolto per l'organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">所属機関における職位(faculty,staff,student,memberなど)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonAssurance</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.11</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonAssurance</prop> | ||||||
|  |                     <prop key="displayName.en">Assurance level</prop> | ||||||
|  |                     <prop key="displayName.de">Vertrauensgrad</prop> | ||||||
|  |                     <prop key="displayName.fr">Niveau de confiance</prop> | ||||||
|  |                     <prop key="displayName.it">Livello di sicurezza</prop> | ||||||
|  |                     <prop key="displayName.ja">保証レベル</prop> | ||||||
|  |                     <prop key="description.en">Set of URIs that assert compliance with specific standards for identity assurance.</prop> | ||||||
|  |                     <prop key="description.de">URIs die eine gewisse Zusicherung für spezifische Standards des Vertrauens beinhalten</prop> | ||||||
|  |                     <prop key="description.fr">Un ensemble d'URI qui attestent la conformité selon un standard pour les niveaux d'assurance d'identités</prop> | ||||||
|  |                     <prop key="description.it">Un insieme di URI che asseriscono l'osservanza dei livelli di sicurezza richiesti</prop> | ||||||
|  |                     <prop key="description.ja">IDの保証レベルに関して特定の基準に準拠していることを示すURI</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonEntitlement</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.7</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonEntitlement</prop> | ||||||
|  |                     <prop key="displayName.en">Entitlement</prop> | ||||||
|  |                     <prop key="displayName.de">Berechtigung</prop> | ||||||
|  |                     <prop key="displayName.fr">Entitlement</prop> | ||||||
|  |                     <prop key="displayName.it">Prerogativa</prop> | ||||||
|  |                     <prop key="displayName.ja">資格情報</prop> | ||||||
|  |                     <prop key="description.en">Member of: URI (either URL or URN) that indicates a set of rights to specific resources based on an agreement across the releavant community</prop> | ||||||
|  |                     <prop key="description.de">Zeichenkette, die Rechte für spezifische Ressourcen beschreibt</prop> | ||||||
|  |                     <prop key="description.fr">Membre de: URI (soit une URL ou une URN) décrivant un droit spécific d'accès.</prop> | ||||||
|  |                     <prop key="description.it">Membro delle seguenti URI (sia URL o URN) che rappresentano diritti specifici d'accesso validi in tutta la communità</prop> | ||||||
|  |                     <prop key="description.ja">特定のアプリケーションもしくはコミュニティ内の複数リソースへのアクセス権限を持つことを示すURI(URLもしくはURN)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonNickname</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.2</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonNickname</prop> | ||||||
|  |                     <prop key="displayName.en">Nickname</prop> | ||||||
|  |                     <prop key="displayName.de">Kurzname</prop> | ||||||
|  |                     <prop key="displayName.de-ch">Übername</prop> | ||||||
|  |                     <prop key="displayName.fr">Surnom</prop> | ||||||
|  |                     <prop key="displayName.it">Diminutivo</prop> | ||||||
|  |                     <prop key="displayName.ja">ニックネーム</prop> | ||||||
|  |                     <prop key="description.en">Person's nickname, or the informal name by which they are accustomed to be hailed.</prop> | ||||||
|  |                     <prop key="description.de">Kurzname einer Person, oder üblicher Rufname zur Begrüßung.</prop> | ||||||
|  |                     <prop key="description.de-ch">Übername einer Person, oder üblicher Rufname zur Begrüssung.</prop> | ||||||
|  |                     <prop key="description.fr">Nom personnalisable pour un usage informel.</prop> | ||||||
|  |                     <prop key="description.it">Diminutivo della persona, o  soprannome.</prop> | ||||||
|  |                     <prop key="description.ja">利用者のニックネームもしくは通称</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonOrgDN</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.3</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonOrgDN</prop> | ||||||
|  |                     <prop key="displayName.en">Organization distinguished name</prop> | ||||||
|  |                     <prop key="description.en">Distinguished name (DN) of the directory entry representing the institution with which the person is associated.</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonOrgUnitDN</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.4</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonOrgUnitDN</prop> | ||||||
|  |                     <prop key="displayName.en">Organization unit distinguished name</prop> | ||||||
|  |                     <prop key="description.en">Distinguished name(s) (DN) of the directory entries representing the person's Organizational Unit(s).</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonOrcid</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.16</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.16</prop> | ||||||
|  |                     <prop key="displayName.en">ORCID</prop> | ||||||
|  |                     <prop key="description.en">ORCID researcher identifier(s) belonging to a person.</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonPrimaryAffiliation</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.5</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonPrimaryAffiliation</prop> | ||||||
|  |                     <prop key="displayName.en">Primary affiliation</prop> | ||||||
|  |                     <prop key="displayName.de">Primäre Zugehörigkeit</prop> | ||||||
|  |                     <prop key="displayName.fr">Affiliation pricipale</prop> | ||||||
|  |                     <prop key="displayName.it">Appartenenza principale</prop> | ||||||
|  |                     <prop key="displayName.ja">主要職位</prop> | ||||||
|  |                     <prop key="description.en">Specifies the person's primary relationship to the institution in broad categories such as student, faculty, staff, alum, etc.</prop> | ||||||
|  |                     <prop key="description.de">Spezifiziert der Hauptbeziehung einer Person innerhalb ihrer Organisation in groben Kategorien wie Student, Mitarbeiter, Alumni, etc.</prop> | ||||||
|  |                     <prop key="description.fr">Spécifie la relation principale d'une personne avec l'institution selon des majeures catégories comme étudiant, collaborateur, alumni etc.</prop> | ||||||
|  |                     <prop key="description.it">Specifica la relazione principale dell persona con l'istituzione secondo le maggiori categorie come studente, collaboratore, alumni, etc.</prop> | ||||||
|  |                     <prop key="description.ja">所属機関における主要な職位(faculty,staff,student,memberなど)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonPrimaryOrgUnitDN</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.8</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN</prop> | ||||||
|  |                     <prop key="displayName.en">Primary organization unit distinguished name</prop> | ||||||
|  |                     <prop key="description.en">Distinguished name (DN) of the directory entry representing the person's primary Organizational Unit.</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonPrincipalName</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder CASScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.6</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonPrincipalName</prop> | ||||||
|  |                     <prop key="saml1.encodeType">false</prop> | ||||||
|  |                     <prop key="displayName.en">Principal name</prop> | ||||||
|  |                     <prop key="displayName.de">Persönliche ID</prop> | ||||||
|  |                     <prop key="displayName.fr">Principal Name</prop> | ||||||
|  |                     <prop key="displayName.it">Principal Name</prop> | ||||||
|  |                     <prop key="displayName.ja">プリンシパルID</prop> | ||||||
|  |                     <prop key="description.en">A unique identifier for a person, mainly for inter-institutional user identification.</prop> | ||||||
|  |                     <prop key="description.de">Eindeutige Benutzeridentifikation</prop> | ||||||
|  |                     <prop key="description.de-ch">Eindeutige Benützeridentifikation</prop> | ||||||
|  |                     <prop key="description.fr">L'identifiant unique de l'utilisateur</prop> | ||||||
|  |                     <prop key="description.it">Un ID personale che identifica chiaramente l'utente in seno alla sua organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">フェデレーション内で一意かつ永続的な利用者識別子</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonPrincipalNamePrior</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder CASScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.12</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.12</prop> | ||||||
|  |                     <prop key="saml1.encodeType">false</prop> | ||||||
|  |                     <prop key="displayName.en">Prior principal name(s)</prop> | ||||||
|  |                     <prop key="description.en">eduPersonPrincipalName value(s) previously associated with the entry.</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonScopedAffiliation</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder CASScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.9</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:eduPersonScopedAffiliation</prop> | ||||||
|  |                     <prop key="saml1.encodeType">false</prop> | ||||||
|  |                     <prop key="displayName.en">Scoped affiliation</prop> | ||||||
|  |                     <prop key="displayName.de">Zugehörigkeit</prop> | ||||||
|  |                     <prop key="displayName.fr">Affiliation</prop> | ||||||
|  |                     <prop key="displayName.it">Tipo di membro</prop> | ||||||
|  |                     <prop key="displayName.ja">スコープ付き職位</prop> | ||||||
|  |                     <prop key="description.en">Specifies the person's affiliation within a particular security domain</prop> | ||||||
|  |                     <prop key="description.de">Art der Zugehörigkeit zur Heimatorganisation</prop> | ||||||
|  |                     <prop key="description.de-ch">Art der Zugehörigkeit zur Heimorganisation</prop> | ||||||
|  |                     <prop key="description.fr">Type d'affiliation dans l'organisation</prop> | ||||||
|  |                     <prop key="description.it">Tipo di membro: Tipo di lavoro svolto per l'organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">セキュリティドメインのスコープが付いた所属機関における職位</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">eduPersonUniqueId</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder CASScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.13</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.5923.1.1.1.13</prop> | ||||||
|  |                     <prop key="saml1.encodeType">false</prop> | ||||||
|  |                     <prop key="displayName.en">Unique ID</prop> | ||||||
|  |                     <prop key="displayName.de">Eindeutige ID</prop> | ||||||
|  |                     <prop key="displayName.fr">ID unique</prop> | ||||||
|  |                     <prop key="displayName.it">ID unico</prop> | ||||||
|  |                     <prop key="displayName.ja">ユニークID</prop> | ||||||
|  |                     <prop key="description.en">A unique identifier for a person, mainly for inter-institutional user identification.</prop> | ||||||
|  |                     <prop key="description.de">Eindeutige Benutzeridentifikation</prop> | ||||||
|  |                     <prop key="description.de-ch">Eindeutige Benützeridentifikation</prop> | ||||||
|  |                     <prop key="description.fr">Identifiant unique de l'utilisateur</prop> | ||||||
|  |                     <prop key="description.it">Un identificativo personale che identifica chiaramente l'utente in seno alla sua organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">フェデレーション内で一意で永続的かつ難読化された利用者識別子(後継はサブジェクトID)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |     </list> | ||||||
|  |     </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										517
									
								
								conf/attributes/inetOrgPerson.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										517
									
								
								conf/attributes/inetOrgPerson.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,517 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Note that all built-in rules rely on URI-naming and thus include the implied settings: | ||||||
|  |      | ||||||
|  |     <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:uri</prop> | ||||||
|  |     <prop key="saml1.namespace">urn:mace:shibboleth:1.0:attributeNamespace:uri</prop> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- https://tools.ietf.org/html/rfc2798 --> | ||||||
|  |  | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader"> | ||||||
|  |     <constructor-arg> | ||||||
|  |     <list> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">cn</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.3</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:cn</prop> | ||||||
|  |                     <prop key="displayName.en">Common name</prop> | ||||||
|  |                     <prop key="description.en">Common name of a person</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">departmentNumber</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.2</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:departmentNumber</prop> | ||||||
|  |                     <prop key="displayName.en">Department number</prop> | ||||||
|  |                     <prop key="displayName.de">Abteilungsnummer</prop> | ||||||
|  |                     <prop key="description.en">Department number</prop> | ||||||
|  |                     <prop key="description.de">Nummer der Abteilung</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">displayName</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.241</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:displayName</prop> | ||||||
|  |                     <prop key="displayName.en">Display name</prop> | ||||||
|  |                     <prop key="displayName.de">Anzeigename</prop> | ||||||
|  |                     <prop key="displayName.fr">Nom</prop> | ||||||
|  |                     <prop key="displayName.it">Nome</prop> | ||||||
|  |                     <prop key="displayName.ja">表示名</prop> | ||||||
|  |                     <prop key="description.en">The name that should appear in white-pages-like applications for this person.</prop> | ||||||
|  |                     <prop key="description.de">Anzeigename</prop> | ||||||
|  |                     <prop key="description.fr">Nom complet d'affichage</prop> | ||||||
|  |                     <prop key="description.it">Nome</prop> | ||||||
|  |                     <prop key="description.ja">アプリケーションでの表示に用いられる英字氏名</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">employeeNumber</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.3</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:employeeNumber</prop> | ||||||
|  |                     <prop key="displayName.en">Employee number</prop> | ||||||
|  |                     <prop key="displayName.de">Mitarbeiternummer</prop> | ||||||
|  |                     <prop key="displayName.fr">Numéro d'employé</prop> | ||||||
|  |                     <prop key="displayName.it">Numero dell'utente</prop> | ||||||
|  |                     <prop key="displayName.ja">従業員番号</prop> | ||||||
|  |                     <prop key="description.en">Identifies an employee within an organization</prop> | ||||||
|  |                     <prop key="description.de">Identifiziert einen Mitarbeiter innerhalb der Organisation</prop> | ||||||
|  |                     <prop key="description.fr">Identifie un employé au sein de l'organisation</prop> | ||||||
|  |                     <prop key="description.it">Identifica l' utente presso l'organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">所属機関における利用者の従業員番号</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">employeeType</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.4</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:employeeType</prop> | ||||||
|  |                     <prop key="displayName.en">Employee type</prop> | ||||||
|  |                     <prop key="description.en">Employee type</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">givenName</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.42</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:givenName</prop> | ||||||
|  |                     <prop key="displayName.en">Given name</prop> | ||||||
|  |                     <prop key="displayName.de">Vorname</prop> | ||||||
|  |                     <prop key="displayName.fr">Prénom</prop> | ||||||
|  |                     <prop key="displayName.it">Nome</prop> | ||||||
|  |                     <prop key="displayName.ja">名</prop> | ||||||
|  |                     <prop key="description.en">Given name of a person</prop> | ||||||
|  |                     <prop key="description.de">Vorname</prop> | ||||||
|  |                     <prop key="description.fr">Prénom de l'utilisateur</prop> | ||||||
|  |                     <prop key="description.it">Nome</prop> | ||||||
|  |                     <prop key="description.ja">氏名(名)の英語表記</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">homePhone</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.20</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:homePhone</prop> | ||||||
|  |                     <prop key="displayName.en">Private phone number</prop> | ||||||
|  |                     <prop key="displayName.de">Telefon Privat</prop> | ||||||
|  |                     <prop key="displayName.fr">Teléphone personnel</prop> | ||||||
|  |                     <prop key="displayName.it">Numero di telefono privato</prop> | ||||||
|  |                     <prop key="displayName.ja">自宅電話番号</prop> | ||||||
|  |                     <prop key="description.en">Private phone number</prop> | ||||||
|  |                     <prop key="description.de">Private Telefonnummer</prop> | ||||||
|  |                     <prop key="description.fr">Numéro de téléphone de domicile de la personne</prop> | ||||||
|  |                     <prop key="description.it">Numero di telefono privato</prop> | ||||||
|  |                     <prop key="description.ja">自宅の電話番号</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">homePostalAddress</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.39</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:homePostalAddress</prop> | ||||||
|  |                     <prop key="displayName.en">Home postal address</prop> | ||||||
|  |                     <prop key="displayName.de">Heimatadresse</prop> | ||||||
|  |                     <prop key="displayName.de-ch">Heimadresse</prop> | ||||||
|  |                     <prop key="displayName.fr">Adresse personnelle</prop> | ||||||
|  |                     <prop key="displayName.it">Indirizzo personale</prop> | ||||||
|  |                     <prop key="displayName.ja">自宅住所</prop> | ||||||
|  |                     <prop key="description.en">Home postal address: Home address of the user</prop> | ||||||
|  |                     <prop key="description.de">Heimatadresse</prop> | ||||||
|  |                     <prop key="description.de-ch">Heimadresse</prop> | ||||||
|  |                     <prop key="description.fr">Adresse postale de domicile de la personne</prop> | ||||||
|  |                     <prop key="description.it">Indirizzo personale: indirizzo dove abita l'utente</prop> | ||||||
|  |                     <prop key="description.ja">自宅の住所</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">initials</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.43</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:initials</prop> | ||||||
|  |                     <prop key="displayName.en">Initials</prop> | ||||||
|  |                     <prop key="displayName.de">Initialen</prop> | ||||||
|  |                     <prop key="displayName.fr">Initiales</prop> | ||||||
|  |                     <prop key="displayName.ja">イニシャル</prop> | ||||||
|  |                     <prop key="description.en">Initials</prop> | ||||||
|  |                     <prop key="description.de">Anfangsbuchstaben des Namens</prop> | ||||||
|  |                     <prop key="description.de-ch">Die Anfangsbuchstaben</prop> | ||||||
|  |                     <prop key="description.fr">L' initiales</prop> | ||||||
|  |                     <prop key="description.ja">イニシャル</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">l</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.7</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:l</prop> | ||||||
|  |                     <prop key="displayName.en">Locality name</prop> | ||||||
|  |                     <prop key="displayName.de">Ort</prop> | ||||||
|  |                     <prop key="displayName.fr">Locality name</prop> | ||||||
|  |                     <prop key="displayName.ja">場所(L)</prop> | ||||||
|  |                     <prop key="description.en">Locality name</prop> | ||||||
|  |                     <prop key="description.de">Ort</prop> | ||||||
|  |                     <prop key="description.fr">Nom de la localité où réside l'objet</prop> | ||||||
|  |                     <prop key="description.ja">場所の名前 日本の場合は市区町村名</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">mail</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.3</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:mail</prop> | ||||||
|  |                     <prop key="displayName.en">E-mail</prop> | ||||||
|  |                     <prop key="displayName.de">E-Mail</prop> | ||||||
|  |                     <prop key="displayName.fr">Email</prop> | ||||||
|  |                     <prop key="displayName.it">E-mail</prop> | ||||||
|  |                     <prop key="displayName.ja">メールアドレス</prop> | ||||||
|  |                     <prop key="description.en">E-Mail: Preferred address for e-mail to be sent to this person</prop> | ||||||
|  |                     <prop key="description.de">E-Mail-Adresse</prop> | ||||||
|  |                     <prop key="description.de-ch">E-Mail Adresse</prop> | ||||||
|  |                     <prop key="description.fr">Adresse de courrier électronique</prop> | ||||||
|  |                     <prop key="description.it">E-Mail: l'indirizzo e-mail preferito dall'utente</prop> | ||||||
|  |                     <prop key="description.ja">メールアドレス</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">mobile</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.41</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:mobile</prop> | ||||||
|  |                     <prop key="displayName.en">Mobile phone number</prop> | ||||||
|  |                     <prop key="displayName.de">Telefon Mobil</prop> | ||||||
|  |                     <prop key="displayName.fr">Numéro de mobile</prop> | ||||||
|  |                     <prop key="displayName.it">Numero di cellulare</prop> | ||||||
|  |                     <prop key="displayName.ja">携帯電話番号</prop> | ||||||
|  |                     <prop key="description.en">Mobile phone number</prop> | ||||||
|  |                     <prop key="description.de">Mobile Telefonnummer</prop> | ||||||
|  |                     <prop key="description.fr">Numéro de teléphone mobile</prop> | ||||||
|  |                     <prop key="description.it">Numero di cellulare</prop> | ||||||
|  |                     <prop key="description.ja">携帯電話の電話番号</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">o</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.10</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:o</prop> | ||||||
|  |                     <prop key="displayName.en">Organization name</prop> | ||||||
|  |                     <prop key="displayName.de">Organisationsname</prop> | ||||||
|  |                     <prop key="displayName.fr">Nom de l'organisation</prop> | ||||||
|  |                     <prop key="displayName.ja">所属機関名</prop> | ||||||
|  |                     <prop key="description.en">Organization name</prop> | ||||||
|  |                     <prop key="description.de">Name der Organisation</prop> | ||||||
|  |                     <prop key="description.fr">Nom de l'organisation</prop> | ||||||
|  |                     <prop key="description.ja">所属機関名称の英語表記</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">ou</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.11</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:ou</prop> | ||||||
|  |                     <prop key="displayName.en">Organizational unit</prop> | ||||||
|  |                     <prop key="displayName.de">Organisationseinheit</prop> | ||||||
|  |                     <prop key="displayName.fr">Unité organisationnelle</prop> | ||||||
|  |                     <prop key="displayName.ja">機関内所属名</prop> | ||||||
|  |                     <prop key="description.en">Organizational unit</prop> | ||||||
|  |                     <prop key="description.de">Name der Organisationseinheit</prop> | ||||||
|  |                     <prop key="description.fr">Nom de l'unité organisationnelle</prop> | ||||||
|  |                     <prop key="description.ja">機関内所属名称の英語表記</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">pager</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.42</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:pager</prop> | ||||||
|  |                     <prop key="displayName.en">Pager number</prop> | ||||||
|  |                     <prop key="description.en">Pager number</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">postalAddress</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.16</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:postalAddress</prop> | ||||||
|  |                     <prop key="displayName.en">Business postal address</prop> | ||||||
|  |                     <prop key="displayName.de">Geschäftsadresse</prop> | ||||||
|  |                     <prop key="displayName.fr">Adresse professionnelle</prop> | ||||||
|  |                     <prop key="displayName.it">Indirizzo professionale</prop> | ||||||
|  |                     <prop key="displayName.ja">所属機関住所</prop> | ||||||
|  |                     <prop key="description.en">Business postal address: Campus or office address</prop> | ||||||
|  |                     <prop key="description.de">Geschäftliche Adresse</prop> | ||||||
|  |                     <prop key="description.de-ch">Adresse am Arbeitsplatz</prop> | ||||||
|  |                     <prop key="description.fr">Adresse de l'institut, de l'université</prop> | ||||||
|  |                     <prop key="description.it">Indirizzo professionale: indirizzo dell'istituto o dell'ufficio</prop> | ||||||
|  |                     <prop key="description.ja">所属機関の住所</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">postalCode</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.17</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:postalCode</prop> | ||||||
|  |                     <prop key="displayName.en">Postal code</prop> | ||||||
|  |                     <prop key="displayName.en-us">ZIP code</prop> | ||||||
|  |                     <prop key="displayName.de">Postleitzahl</prop> | ||||||
|  |                     <prop key="displayName.fr">Code postal</prop> | ||||||
|  |                     <prop key="displayName.ja">郵便番号</prop> | ||||||
|  |                     <prop key="description.en">Postal code</prop> | ||||||
|  |                     <prop key="description.en-us">ZIP code</prop> | ||||||
|  |                     <prop key="description.de">Postleitzahl</prop> | ||||||
|  |                     <prop key="description.fr">Code postal</prop> | ||||||
|  |                     <prop key="description.ja">郵便番号</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">postOfficeBox</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:mace:dir:attribute-def:postOfficeBox</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:2.5.4.18</prop> | ||||||
|  |                     <prop key="displayName.en">Postal box</prop> | ||||||
|  |                     <prop key="displayName.de">Postfach</prop> | ||||||
|  |                     <prop key="displayName.fr">Boite postale</prop> | ||||||
|  |                     <prop key="displayName.fr-ch">Case postale</prop> | ||||||
|  |                     <prop key="displayName.ja">私書箱</prop> | ||||||
|  |                     <prop key="description.en">Postal box identifier</prop> | ||||||
|  |                     <prop key="description.de">Postfach</prop> | ||||||
|  |                     <prop key="description.fr">Boite postale</prop> | ||||||
|  |                     <prop key="description.fr-ch">Case postale</prop> | ||||||
|  |                     <prop key="description.ja">私書箱</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">preferredLanguage</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.39</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:preferredLanguage</prop> | ||||||
|  |                     <prop key="displayName.en">Preferred Language</prop> | ||||||
|  |                     <prop key="displayName.de">Bevorzugte Sprache</prop> | ||||||
|  |                     <prop key="displayName.fr">Langue préférée</prop> | ||||||
|  |                     <prop key="displayName.it">Lingua preferita</prop> | ||||||
|  |                     <prop key="displayName.ja">希望言語</prop> | ||||||
|  |                     <prop key="description.en">Preferred language: Users preferred language (see RFC1766)</prop> | ||||||
|  |                     <prop key="description.de">Bevorzugte Sprache (siehe RFC1766)</prop> | ||||||
|  |                     <prop key="description.fr">Exemple: fr, de, it, en, ... (voir RFC1766)</prop> | ||||||
|  |                     <prop key="description.it">Lingua preferita: la lingua preferita dall'utente (cfr. RFC1766)</prop> | ||||||
|  |                     <prop key="description.ja">利用者が希望する言語(RFC1766 を参照)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">sn</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.4</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:sn</prop> | ||||||
|  |                     <prop key="displayName.en">Surname</prop> | ||||||
|  |                     <prop key="displayName.de">Nachname</prop> | ||||||
|  |                     <prop key="displayName.fr">Nom de famille</prop> | ||||||
|  |                     <prop key="displayName.it">Cognome</prop> | ||||||
|  |                     <prop key="displayName.ja">姓</prop> | ||||||
|  |                     <prop key="description.en">Surname or family name</prop> | ||||||
|  |                     <prop key="description.de">Familienname</prop> | ||||||
|  |                     <prop key="description.fr">Nom de famille de l'utilisateur.</prop> | ||||||
|  |                     <prop key="description.it">Cognome dell'utilizzatore</prop> | ||||||
|  |                     <prop key="description.ja">氏名(姓)の英語表記</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">st</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.8</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:st</prop> | ||||||
|  |                     <prop key="displayName.en">State or province name</prop> | ||||||
|  |                     <prop key="displayName.ja">都道府県もしくは州や省(ST)</prop> | ||||||
|  |                     <prop key="description.en">State or province name</prop> | ||||||
|  |                     <prop key="description.ja">州名や省名 国によって異なり日本の場合は都道府県名</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">street</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.9</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:street</prop> | ||||||
|  |                     <prop key="displayName.en">Street</prop> | ||||||
|  |                     <prop key="displayName.de">Straße</prop> | ||||||
|  |                     <prop key="displayName.de-ch">Strasse</prop> | ||||||
|  |                     <prop key="displayName.fr">Rue</prop> | ||||||
|  |                     <prop key="displayName.ja">通り</prop> | ||||||
|  |                     <prop key="description.en">Street address</prop> | ||||||
|  |                     <prop key="description.de">Name der Straße</prop> | ||||||
|  |                     <prop key="description.de-ch">Strassenadresse</prop> | ||||||
|  |                     <prop key="description.fr">Nom de rue</prop> | ||||||
|  |                     <prop key="description.ja">通りおよび番地</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">telephoneNumber</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.20</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:telephoneNumber</prop> | ||||||
|  |                     <prop key="displayName.en">Business phone number</prop> | ||||||
|  |                     <prop key="displayName.de">Telefon Geschäft</prop> | ||||||
|  |                     <prop key="displayName.fr">Teléphone professionnel</prop> | ||||||
|  |                     <prop key="displayName.it">Numero di telefono dell'ufficio</prop> | ||||||
|  |                     <prop key="displayName.ja">所属機関内電話番号</prop> | ||||||
|  |                     <prop key="description.en">Business phone number: Office or campus phone number</prop> | ||||||
|  |                     <prop key="description.de">Telefonnummer am Arbeitsplatz</prop> | ||||||
|  |                     <prop key="description.fr">Teléphone de l'institut, de l'université</prop> | ||||||
|  |                     <prop key="description.it">Numero di telefono dell'ufficio</prop> | ||||||
|  |                     <prop key="description.ja">所属機関での利用者の電話番号</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |          | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">title</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:2.5.4.12</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:title</prop> | ||||||
|  |                     <prop key="displayName.en">Title</prop> | ||||||
|  |                     <prop key="displayName.de">Titel</prop> | ||||||
|  |                     <prop key="displayName.fr">Title</prop> | ||||||
|  |                     <prop key="displayName.ja">肩書き</prop> | ||||||
|  |                     <prop key="description.en">Title of a person</prop> | ||||||
|  |                     <prop key="description.de">Titel der Person</prop> | ||||||
|  |                     <prop key="description.fr">Titre de la personne</prop> | ||||||
|  |                     <prop key="description.ja">利用者の肩書き</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |          | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">uid</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:0.9.2342.19200300.100.1.1</prop> | ||||||
|  |                     <prop key="saml1.name">urn:mace:dir:attribute-def:uid</prop> | ||||||
|  |                     <prop key="displayName.en">User ID</prop> | ||||||
|  |                     <prop key="displayName.de">Benutzer-ID</prop> | ||||||
|  |                     <prop key="displayName.fr">ID utilisateur</prop> | ||||||
|  |                     <prop key="displayName.it">ID dell'utente</prop> | ||||||
|  |                     <prop key="displayName.ja">ユーザID</prop> | ||||||
|  |                     <prop key="description.en">A unique identifier for a person, mainly used for user identification within the user's home organization.</prop> | ||||||
|  |                     <prop key="description.de">Eine eindeutige Nummer für eine Person, welche hauptsächlich zur Identifikation innerhalb der Organisation benutzt wird.</prop> | ||||||
|  |                     <prop key="description.fr">Identifiant de connexion d'une personnes sur les systèmes informatiques.</prop> | ||||||
|  |                     <prop key="description.it">Identificativo unico della persona, usato per l'identificazione dell'utente all'interno della organizzazione di appartenenza.</prop> | ||||||
|  |                     <prop key="description.ja">所属機関内で一意の利用者識別子</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |     </list> | ||||||
|  |     </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										73
									
								
								conf/attributes/samlSubject.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								conf/attributes/samlSubject.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Note that all built-in rules rely on URI-naming and thus include the implied settings: | ||||||
|  |      | ||||||
|  |     <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:uri</prop> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- https://wiki.oasis-open.org/security/SAMLSubjectIDAttr --> | ||||||
|  |  | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader"> | ||||||
|  |     <constructor-arg> | ||||||
|  |     <list> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">samlSubjectID</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oasis:names:tc:SAML:attribute:subject-id</prop> | ||||||
|  |                     <prop key="displayName.en">Unique ID</prop> | ||||||
|  |                     <prop key="displayName.de">Eindeutige ID</prop> | ||||||
|  |                     <prop key="displayName.fr">ID unique</prop> | ||||||
|  |                     <prop key="displayName.it">ID unico</prop> | ||||||
|  |                     <prop key="displayName.ja">サブジェクトID</prop> | ||||||
|  |                     <prop key="description.en">A unique identifier for a person, mainly for inter-institutional user identification.</prop> | ||||||
|  |                     <prop key="description.de">Eindeutige Benutzeridentifikation</prop> | ||||||
|  |                     <prop key="description.de-ch">Eindeutige Benützeridentifikation</prop> | ||||||
|  |                     <prop key="description.fr">Identifiant unique de l'utilisateur</prop> | ||||||
|  |                     <prop key="description.it">Un identificativo personale che identifica chiaramente l'utente in seno alla sua organizzazione</prop> | ||||||
|  |                     <prop key="description.ja">フェデレーション内で一意で永続的かつ難読化された利用者識別子(eduPersonUniqueIdの後継)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">samlPairwiseID</prop> | ||||||
|  |                     <prop key="transcoder">SAML2ScopedStringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oasis:names:tc:SAML:attribute:pairwise-id</prop> | ||||||
|  |                     <prop key="displayName.en">Pairwise ID</prop> | ||||||
|  |                     <prop key="displayName.de">Pairwise ID</prop> | ||||||
|  |                     <prop key="displayName.fr">Pairwise ID</prop> | ||||||
|  |                     <prop key="displayName.it">Pairwise ID</prop> | ||||||
|  |                     <prop key="displayName.ja">ペアワイズID</prop> | ||||||
|  |                     <prop key="description.en">Pairwise ID: A unique identifier for a person, different for each service provider.</prop> | ||||||
|  |                     <prop key="description.de">Pairwise ID: Eindeutige Benutzeridentifikation, unterschiedlich pro Service Provider.</prop> | ||||||
|  |                     <prop key="description.de-ch">Pairwise ID: Eindeutige Benützeridentifikation, unterschiedlich pro Service Provider.</prop> | ||||||
|  |                     <prop key="description.fr">Pairwise ID: Un identifiant unique de l'utilisateur, différent pour chaque fournisseur de service.</prop> | ||||||
|  |                     <prop key="description.it">Pairwise ID: identificativo unico della persona, differente per ogni fornitore di servizio.</prop> | ||||||
|  |                     <prop key="description.ja">フェデレーション内で一意かつSP毎に送出される値が異なる利用者識別子(eduPersonTargetedIDの後継)</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |     </list> | ||||||
|  |     </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										237
									
								
								conf/attributes/schac.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								conf/attributes/schac.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,237 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |  | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Note that all built-in rules rely on URI-naming and thus include the implied settings: | ||||||
|  |      | ||||||
|  |     <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:uri</prop> | ||||||
|  |     <prop key="saml1.namespace">urn:mace:shibboleth:1.0:attributeNamespace:uri</prop> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <bean parent="shibboleth.TranscodingRuleLoader"> | ||||||
|  |     <constructor-arg> | ||||||
|  |     <list> | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacMotherTongue</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.1</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.1</prop> | ||||||
|  |                     <prop key="displayName.en">Mother Tongue</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacGender</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.2</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.2</prop> | ||||||
|  |                     <prop key="displayName.en">Gender</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacDateOfBirth</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.3</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.3</prop> | ||||||
|  |                     <prop key="displayName.en">Date or Birth</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacPlaceOfBirth</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.4</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.4</prop> | ||||||
|  |                     <prop key="displayName.en">Place of Birth</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacCountryOfCitizenship</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.5</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.5</prop> | ||||||
|  |                     <prop key="displayName.en">Country of Citizenship</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacHomeOrganization</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.9</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.9</prop> | ||||||
|  |                     <prop key="displayName.en">Home Organization</prop> | ||||||
|  |                     <prop key="displayName.fi">Kotiorganisaatio</prop> | ||||||
|  |                     <prop key="displayDescription.en">The domain name of the person's home organisation</prop> | ||||||
|  |                     <prop key="displayDescription.fi">Henkilön kotiorganisaation domain-nimi</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacHomeOrganizationType</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.10</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.10</prop> | ||||||
|  |                     <prop key="displayName.en">Home organization type</prop> | ||||||
|  |                     <prop key="displayName.fi">Kotiorganisaation tyyppi</prop> | ||||||
|  |                     <prop key="displayDescription.en">Home organisation type: university, polytechnic, etc</prop> | ||||||
|  |                     <prop key="displayDescription.fi">Kotiorganisaation tyyppi: yliopisto, ammattikorkeakoulu jne</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacCountryOfResidence</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.11</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.11</prop> | ||||||
|  |                     <prop key="displayName.en">Country of Reseidence</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacUserPresenceID</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.12</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.12</prop> | ||||||
|  |                     <prop key="displayName.en">User Presence ID</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |          <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacPersonalPosition</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.13</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.13</prop> | ||||||
|  |                     <prop key="displayName.en">Personal Position</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacPersonalUniqueCode</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.14</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.14</prop> | ||||||
|  |                     <prop key="displayName.en">Personal Unique Code</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  | 	<bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacPersonalUniqueID</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.15</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.15</prop> | ||||||
|  |                     <prop key="displayName.en">Personal Unique ID</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacExpiryDate</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.17</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.17</prop> | ||||||
|  |                     <prop key="displayName.en">Expiry Date</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacUserPrivateAttribute</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.18</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.18</prop> | ||||||
|  |                     <prop key="displayName.en">User Private Attribute</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacUserStatus</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.19</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.19</prop> | ||||||
|  |                     <prop key="displayName.en">User Status</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacProjectMembership</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.20</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.20</prop> | ||||||
|  |                     <prop key="displayName.en">Project Membership</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |  | ||||||
|  |         <bean parent="shibboleth.TranscodingProperties"> | ||||||
|  |             <property name="properties"> | ||||||
|  |                 <props merge="true"> | ||||||
|  |                     <prop key="id">schacProjectSpecificRole</prop> | ||||||
|  |                     <prop key="transcoder">SAML2StringTranscoder</prop> | ||||||
|  |                     <prop key="saml2.name">urn:oid:1.3.6.1.4.1.25178.1.2.21</prop> | ||||||
|  |                     <prop key="saml1.name">urn:oid:1.3.6.1.4.1.25178.1.2.21</prop> | ||||||
|  |                     <prop key="displayName.en">Project Specific Role</prop> | ||||||
|  |                 </props> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |     </list> | ||||||
|  |     </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  | </beans> | ||||||
							
								
								
									
										55
									
								
								conf/audit.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								conf/audit.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |     xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |     xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |     xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |  | ||||||
|  |     default-init-method="initialize" | ||||||
|  |     default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     This bean defines a mapping between audit log categories and formatting strings. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.AuditFormattingMap"> | ||||||
|  |         <entry key="Shibboleth-Audit" value="%a|%ST|%T|%u|%SP|%i|%ac|%t|%attr|%n|%f|%SSO|%XX|%XA|%b|%bb|%e|%S|%SS|%s|%UA" /> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <!-- Override the format of date/time fields in the log and/or convert to default time zone. --> | ||||||
|  |     <!-- | ||||||
|  |     <bean id="shibboleth.AuditDateTimeFormat" class="java.lang.String" c:_0="yyyy-MM-dd'T'HH:mm:ss.SSSZZ" /> | ||||||
|  |     <util:constant id="shibboleth.AuditDefaultTimeZone" static-field="java.lang.Boolean.TRUE" /> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- Allows auditing to be disabled selectively for particular profiles/flows. --> | ||||||
|  |     <util:list id="shibboleth.AuditSuppressedProfiles"> | ||||||
|  |         <value>http://shibboleth.net/ns/profiles/status</value> | ||||||
|  |         <value>http://shibboleth.net/ns/profiles/mdquery</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     You can freely add/change this map to map constants or frequently appearing strings into | ||||||
|  |     shorter values in the audit log. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.AuditFieldReplacementMap"> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:1.0:am:password" value="password" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:ac:classes:Password" value="password" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" value="password" /> | ||||||
|  |         <entry key="urn:mace:shibboleth:1.0:nameIdentifier" value="transient" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" value="transient" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" value="persistent" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" value="emailAddress" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:status:Success" value="Success" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:status:Requester" value="Requester" /> | ||||||
|  |         <entry key="urn:oasis:names:tc:SAML:2.0:status:Responder" value="Responder" /> | ||||||
|  |         <entry key="http://www.w3.org/2009/xmlenc11#aes128-gcm" value="AES128-GCM" /> | ||||||
|  |         <entry key="http://www.w3.org/2009/xmlenc11#aes192-gcm" value="AES192-GCM" /> | ||||||
|  |         <entry key="http://www.w3.org/2009/xmlenc11#aes256-gcm" value="AES256-GCM" /> | ||||||
|  |         <entry key="http://www.w3.org/2001/04/xmlenc#aes128-cbc" value="AES128-CBC" /> | ||||||
|  |         <entry key="http://www.w3.org/2001/04/xmlenc#aes192-cbc" value="AES192-CBC" /> | ||||||
|  |         <entry key="http://www.w3.org/2001/04/xmlenc#aes256-cbc" value="AES256-CBC" /> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										117
									
								
								conf/authn/authn-comparison.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								conf/authn/authn-comparison.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     This is a map used to "weight" particular methods above others if the IdP has to randomly select one | ||||||
|  |     to insert into a SAML authentication statement. The typical use shown below is to bias the IdP in favor | ||||||
|  |     of expressing the SAML 2 PasswordProtectedTransport class over the more vanilla Password class on the | ||||||
|  |     assumption that the IdP doesn't accept passwords via an insecure channel. This map never causes the IdP | ||||||
|  |     to violate its matching rules if an RP requests a particular value; it only matters when nothing specific | ||||||
|  |     is chosen. Anything not in the map has a weight of zero. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <util:map id="shibboleth.AuthenticationPrincipalWeightMap"> | ||||||
|  |         <entry> | ||||||
|  |             <key> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" /> | ||||||
|  |             </key> | ||||||
|  |             <value>1</value> | ||||||
|  |         </entry> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Uncomment and add entries to this map to support "inexact" SAML RequestedAuthnContext operators. | ||||||
|  |     Please refer to the AuthenticationFlowSelection documentation topic for details and examples.  | ||||||
|  |     --> | ||||||
|  |     <!-- | ||||||
|  |     <util:map id="shibboleth.AuthnComparisonRules"> | ||||||
|  |     </util:map> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- List of context classes or declarations to ignore if an SP requests them. --> | ||||||
|  |  | ||||||
|  |     <util:list id="shibboleth.IgnoredContexts"> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</value> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Mappings to transform custom Principals for proxied AuthnRequests. | ||||||
|  |     Key is the input, value is a collection of possibly empty outputs. | ||||||
|  |     Used by default to transform authentication type values from | ||||||
|  |     SPs -> Proxied IdPs. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.PrincipalProxyRequestMappings"> | ||||||
|  |         <!-- | ||||||
|  |         <entry> | ||||||
|  |             <key> | ||||||
|  |                 <bean parent="shibboleth.SAML1AuthenticationMethod" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |             </key> | ||||||
|  |             <list> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context1" /> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context2" /> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry> | ||||||
|  |             <key> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |             </key> | ||||||
|  |             <list> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context1" /> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context2" /> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         --> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Mappings to transform proxied Principals for inclusion in Subjects. | ||||||
|  |     Key is the input, value is a collection of possibly empty outputs. | ||||||
|  |     Used by default to transform values from Proxied IdP. ->  | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.PrincipalProxyResponseMappings"> | ||||||
|  |         <!-- | ||||||
|  |         <entry> | ||||||
|  |             <key> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context1" /> | ||||||
|  |             </key> | ||||||
|  |             <list> | ||||||
|  |                 <bean parent="shibboleth.SAML1AuthenticationMethod" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry> | ||||||
|  |             <key> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://proxy.example.org/context2" /> | ||||||
|  |             </key> | ||||||
|  |             <list> | ||||||
|  |                 <bean parent="shibboleth.SAML1AuthenticationMethod" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |                 <bean parent="shibboleth.SAML2AuthnContextClassRef" | ||||||
|  |                     c:classRef="https://sp.example.org/context" /> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         --> | ||||||
|  |     </util:map> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										22
									
								
								conf/authn/authn-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								conf/authn/authn-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | <flow xmlns="http://www.springframework.org/schema/webflow" | ||||||
|  |       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |       xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow.xsd" | ||||||
|  |       abstract="true"> | ||||||
|  |  | ||||||
|  |     <!-- ADVANCED USE ONLY --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     You can ignore this file unless you are creating your own custom login subflows that want to | ||||||
|  |     report custom events in response to unusual error or warning conditions. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- Custom error events to reflect back from user-supplied login subflows. --> | ||||||
|  |  | ||||||
|  |     <!-- <end-state id="MyCustomEvent" /> --> | ||||||
|  |  | ||||||
|  |     <global-transitions> | ||||||
|  |         <!-- <transition on="MyCustomEvent" to="MyCustomEvent" /> --> | ||||||
|  |         <transition on="#{!'proceed'.equals(currentEvent.id)}" to="InvalidEvent" /> | ||||||
|  |     </global-transitions> | ||||||
|  |  | ||||||
|  | </flow> | ||||||
							
								
								
									
										218
									
								
								conf/authn/authn.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								conf/authn/authn.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,218 @@ | |||||||
|  | # Properties that control authentication generally and the behavior of | ||||||
|  | # specific methods. | ||||||
|  |  | ||||||
|  | # Regular expression matching login flows to enable, e.g. IPAddress|Password | ||||||
|  | #idp.authn.flows = Password | ||||||
|  |  | ||||||
|  | # Default settings for most authentication methods. | ||||||
|  | #idp.authn.defaultLifetime = PT1H | ||||||
|  | #idp.authn.defaultTimeout = PT30M | ||||||
|  | #idp.authn.proxyRestrictionsEnforced = true | ||||||
|  |  | ||||||
|  | # Whether to populate relying party user interface information for display | ||||||
|  | # during authentication, consent, terms-of-use. | ||||||
|  | #idp.authn.rpui = true | ||||||
|  |  | ||||||
|  | # Whether to prioritize "active" results when an SP requests more than | ||||||
|  | # one possible matching login method (V2 behavior was to favor them) | ||||||
|  | #idp.authn.favorSSO = false | ||||||
|  |  | ||||||
|  | # Whether to fail requests when a user identity after authentication | ||||||
|  | # doesn't match the identity in a pre-existing session. | ||||||
|  | #idp.authn.identitySwitchIsError = false | ||||||
|  |  | ||||||
|  | # If using IdP discovery feature, provides a discovery location to use. | ||||||
|  | #idp.authn.discoveryURL = https://ds.example.org/shibboleth-ds/index.html | ||||||
|  |  | ||||||
|  | # Properties below override specific method behavior, as an alternative | ||||||
|  | # to defining Spring beans in XML. Refer to the documentation for a complete | ||||||
|  | # list. Many of the properties below are mentioned only because they are | ||||||
|  | # atypical defaults assumed for a given method. | ||||||
|  |  | ||||||
|  | # Flow selection among multiple equivalent options can be managed with | ||||||
|  | # the order properties, lower will be tried first. | ||||||
|  |  | ||||||
|  | #### Password #### | ||||||
|  |  | ||||||
|  | #idp.authn.Password.order = 1000 | ||||||
|  | #idp.authn.Password.passiveAuthenticationSupported = true | ||||||
|  | #idp.authn.Password.forcedAuthenticationSupported = true | ||||||
|  | # Override this and removeAfterValidation to require all validators to succeed | ||||||
|  | #idp.authn.Password.requireAll = false | ||||||
|  | # Override to keep the password around | ||||||
|  | #idp.authn.Password.removeAfterValidation = true | ||||||
|  | # Override to store password in Java Subject | ||||||
|  | #idp.authn.Password.retainAsPrivateCredential = false | ||||||
|  | # Simple username transforms before validation | ||||||
|  | #idp.authn.Password.trim = true | ||||||
|  | #idp.authn.Password.lowercase = false | ||||||
|  | #idp.authn.Password.uppercase = false | ||||||
|  | #idp.authn.Password.matchExpression =  | ||||||
|  | # Override default form field names | ||||||
|  | #idp.authn.Password.usernameFieldName = j_username | ||||||
|  | #idp.authn.Password.passwordFieldName = j_password | ||||||
|  | #idp.authn.Password.ssoBypassFieldName = donotcache | ||||||
|  | # Unset if using customized Principals per validator | ||||||
|  | #idp.authn.Password.addDefaultPrincipals = true | ||||||
|  | # The Principal collection below is the typical default if not otherwise noted. | ||||||
|  | #idp.authn.Password.supportedPrincipals = \ | ||||||
|  | #    saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \ | ||||||
|  | #    saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \ | ||||||
|  | #    saml1/urn:oasis:names:tc:SAML:1.0:am:password | ||||||
|  | # Validators are controlled in password-authn-config.xml | ||||||
|  |  | ||||||
|  | #### Password Backends #### | ||||||
|  |  | ||||||
|  | # See ldap.properties for LDAP authn properties | ||||||
|  | # Kerberos settings | ||||||
|  | #idp.authn.Krb5.refreshConfig = false | ||||||
|  | #idp.authn.Krb5.preserveTicket = false | ||||||
|  | # Set next two for KDC verification | ||||||
|  | #idp.authn.Krb5.servicePrincipal =  | ||||||
|  | #idp.authn.Krb5.keytab =  | ||||||
|  | # JAAS settings | ||||||
|  | #idp.authn.JAAS.loginConfigNames = ShibUserPassAuth | ||||||
|  | #idp.authn.JAAS.loginConfig = %{idp.home}/conf/authn/jaas.config | ||||||
|  |  | ||||||
|  | #### External #### | ||||||
|  |  | ||||||
|  | #idp.authn.External.order = 1000 | ||||||
|  | #idp.authn.External.nonBrowserSupported = false | ||||||
|  | #idp.authn.External.matchExpression =  | ||||||
|  | # Unset if you plan to return full Java Subject from external source | ||||||
|  | #idp.authn.External.addDefaultPrincipals = true | ||||||
|  | # Servlet context-relative path to wherever your implementation lives | ||||||
|  | idp.authn.External.externalAuthnPath = contextRelative:external.jsp | ||||||
|  |  | ||||||
|  | #### RemoteUser #### | ||||||
|  |  | ||||||
|  | #idp.authn.RemoteUser.order = 1000 | ||||||
|  | #idp.authn.RemoteUser.nonBrowserSupported = false | ||||||
|  | #idp.authn.RemoteUser.matchExpression =  | ||||||
|  | # Unset in most cases only if using the authnMethodHeader or | ||||||
|  | # subjectAttribute settings | ||||||
|  | #idp.authn.RemoteUser.addDefaultPrincipals = true | ||||||
|  | # Most other settings need to be supplied via web.xml to the servlet | ||||||
|  |  | ||||||
|  | #### RemoteUserInternal #### | ||||||
|  |  | ||||||
|  | #idp.authn.RemoteUserInternal.order = 1000 | ||||||
|  | #idp.authn.RemoteUserInternal.nonBrowserSupported = true | ||||||
|  | # Unset in most cases only if using the authnMethodHeader feature | ||||||
|  | #idp.authn.RemoteUserInternal.addDefaultPrincipals = true | ||||||
|  | #idp.authn.RemoteUserInternal.checkRemoteUser = true | ||||||
|  | # Comma-delimited lists of attributes or headers to pull from | ||||||
|  | #idp.authn.RemoteUserInternal.checkAttributes =  | ||||||
|  | #idp.authn.RemoteUserInternal.checkHeaders =  | ||||||
|  | # Simple transforms to apply | ||||||
|  | #idp.authn.RemoteUserInternal.trim = true | ||||||
|  | #idp.authn.RemoteUserInternal.lowercase = false | ||||||
|  | #idp.authn.RemoteUserInternal.uppercase = false | ||||||
|  | #idp.authn.RemoteUserInternal.matchExpression =  | ||||||
|  | #idp.authn.RemoteUserInternal.allowedUsernames =  | ||||||
|  | #idp.authn.RemoteUserInternal.deniedUsernames =  | ||||||
|  |  | ||||||
|  | #### SPNEGO #### | ||||||
|  |  | ||||||
|  | #idp.authn.SPNEGO.order = 1000 | ||||||
|  | #idp.authn.SPNEGO.nonBrowserSupported = false | ||||||
|  | #idp.authn.SPNEGO.enforceRun = false | ||||||
|  | #idp.authn.SPNEGO.refreshKrbConfig = false | ||||||
|  | #idp.authn.SPNEGO.matchExpression =  | ||||||
|  | idp.authn.SPNEGO.supportedPrincipals = \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos, \ | ||||||
|  |     saml1/urn:ietf:rfc:1510 | ||||||
|  |  | ||||||
|  | #### X509 #### | ||||||
|  |  | ||||||
|  | #idp.authn.X509.order = 1000 | ||||||
|  | #idp.authn.X509.nonBrowserSupported = false | ||||||
|  | # Servlet context-relative path to wherever your implementation lives | ||||||
|  | #idp.authn.X509.externalAuthnPath = contextRelative:x509-prompt.jsp | ||||||
|  | idp.authn.X509.supportedPrincipals = \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:X509, \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient, \ | ||||||
|  |     saml1/urn:ietf:rfc:2246 | ||||||
|  |  | ||||||
|  | #### X509Internal #### | ||||||
|  |  | ||||||
|  | #idp.authn.X509Internal.order = 1000 | ||||||
|  | #idp.authn.X509Internal.nonBrowserSupported = false | ||||||
|  | #idp.authn.X509Internal.saveCertificateToCredentialSet = true | ||||||
|  | idp.authn.X509Internal.supportedPrincipals = \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:X509, \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient, \ | ||||||
|  |     saml1/urn:ietf:rfc:2246 | ||||||
|  |  | ||||||
|  | #### IPAddress #### | ||||||
|  |  | ||||||
|  | #idp.authn.IPAddress.order = 1000 | ||||||
|  | #idp.authn.IPAddress.passiveAuthenticationSupported = true | ||||||
|  | #idp.authn.IPAddress.lifetime = PT60S | ||||||
|  | #idp.authn.IPAddress.inactivityTimeout = PT60S | ||||||
|  | idp.authn.IPAddress.supportedPrincipals = \ | ||||||
|  |    saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol | ||||||
|  |  | ||||||
|  | #### Function #### | ||||||
|  |  | ||||||
|  | #idp.authn.Function.order = 1000 | ||||||
|  | #idp.authn.Function.passiveAuthenticationSupported = true | ||||||
|  | # Unset if you plan to return full Java Subject from function | ||||||
|  | #idp.authn.Function.addDefaultPrincipals = true | ||||||
|  |  | ||||||
|  | #### Duo #### | ||||||
|  |  | ||||||
|  | #idp.authn.Duo.order = 1000 | ||||||
|  | #idp.authn.Duo.nonBrowserSupported = false | ||||||
|  | #idp.authn.Duo.forcedAuthenticationSupported = true | ||||||
|  | # Unset if you have advanced Duo integrations with individualized Principals | ||||||
|  | #idp.authn.Duo.addDefaultPrincipals = true | ||||||
|  | # The list below should be changed to reflect whatever locally- or | ||||||
|  | # community-defined values are appropriate to represent Duo. It is | ||||||
|  | # strongly advised that the value not be specific to Duo or any | ||||||
|  | # particular technology to avoid lock-in. | ||||||
|  | idp.authn.Duo.supportedPrincipals = \ | ||||||
|  |     saml2/http://example.org/ac/classes/mfa, \ | ||||||
|  |     saml1/http://example.org/ac/classes/mfa | ||||||
|  | # Default Duo integration settings are defined separately | ||||||
|  | # in duo.properties due to the sensitivity of the secret key. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #### SAML #### | ||||||
|  |  | ||||||
|  | #idp.authn.SAML.order = 1000 | ||||||
|  | #idp.authn.SAML.nonBrowserSupported = false | ||||||
|  | #idp.authn.SAML.passiveAuthenticationSupported = true | ||||||
|  | #idp.authn.SAML.forcedAuthenticationSupported = true | ||||||
|  | #idp.authn.SAML.proxyScopingEnforced = true | ||||||
|  | # Discovery options: | ||||||
|  | #   Define shibboleth.authn.SAML.discoveryFunction bean | ||||||
|  | #   Set proxyEntityID property | ||||||
|  | #   Fall through to discovery via discoveryRequired property | ||||||
|  | #idp.authn.SAML.proxyEntityID = https://idp.example.org/idp/shibboleth | ||||||
|  | #idp.authn.SAML.discoveryRequired = true | ||||||
|  | # Generally left false with bidirectional mappings in | ||||||
|  | # conf/authn/authn-comparison.xml across the proxy boundary. | ||||||
|  | # Adjust as needed to reflect IdP's capabilities/support. | ||||||
|  | #idp.authn.SAML.addDefaultPrincipals = false | ||||||
|  | #idp.authn.SAML.supportedPrincipals = \ | ||||||
|  | #    saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \ | ||||||
|  | #    saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \ | ||||||
|  | #    saml1/urn:oasis:names:tc:SAML:1.0:am:password | ||||||
|  |  | ||||||
|  | #### MFA #### | ||||||
|  |  | ||||||
|  | #idp.authn.MFA.order = 1000 | ||||||
|  | #idp.authn.MFA.passiveAuthenticationSupported = true | ||||||
|  | #idp.authn.MFA.forcedAuthenticationSupported = true | ||||||
|  | #idp.authn.MFA.validateLoginTransitions = true | ||||||
|  | # The list below almost certainly requires changes, and should generally be the | ||||||
|  | # union of any of the separate factors you combine in your particular MFA flow | ||||||
|  | # rules. The example corresponds to the example in mfa-authn-config.xml that | ||||||
|  | # combines IPAddress with Password. | ||||||
|  | idp.authn.MFA.supportedPrincipals = \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol, \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \ | ||||||
|  |     saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \ | ||||||
|  |     saml1/urn:oasis:names:tc:SAML:1.0:am:password | ||||||
|  | # Most actual setup via mfa-authn-config.xml | ||||||
							
								
								
									
										112
									
								
								conf/authn/password-authn-config.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								conf/authn/password-authn-config.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Ordered list of CredentialValidators to apply to a request. | ||||||
|  |      | ||||||
|  |     The four supplied variants are shown below; the HTPasswd option | ||||||
|  |     is an OOB default for demo account purposes, and you will | ||||||
|  |     want to remove it after initial install and testing. | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.authn.Password.Validators"> | ||||||
|  |         <ref bean="shibboleth.LDAPValidator" /> | ||||||
|  |         <!-- <ref bean="shibboleth.KerberosValidator" /> --> | ||||||
|  |         <!-- <ref bean="shibboleth.JAASValidator" /> --> | ||||||
|  |         <!-- <bean parent="shibboleth.HTPasswdValidator" p:resource="%{idp.home}/credentials/demo.htpasswd" /> --> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- Apply any regular expression replacement pairs to username before validation. --> | ||||||
|  |     <util:list id="shibboleth.authn.Password.Transforms"> | ||||||
|  |         <!-- | ||||||
|  |         <bean parent="shibboleth.Pair" p:first="^(.+)@example\.org$" p:second="$1" /> | ||||||
|  |         --> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- Uncomment to configure account lockout backed by in-memory storage. --> | ||||||
|  |     <!-- | ||||||
|  |     <bean id="shibboleth.authn.Password.AccountLockoutManager" | ||||||
|  |         parent="shibboleth.StorageBackedAccountLockoutManager" | ||||||
|  |         p:maxAttempts="5" | ||||||
|  |         p:counterInterval="PT5M" | ||||||
|  |         p:lockoutDuration="PT5M" | ||||||
|  |         p:extendLockoutDuration="false" /> | ||||||
|  |     --> | ||||||
|  |        | ||||||
|  |     <!-- | ||||||
|  |     Define entries here to map error messages detected by validation actions and classify them as particular | ||||||
|  |     kinds of errors for use in your templates and as events in flows. | ||||||
|  |  | ||||||
|  |     Keys are events to signal, values are error codes. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.authn.Password.ClassifiedMessageMap"> | ||||||
|  |         <entry key="UnknownUsername"> | ||||||
|  |             <list> | ||||||
|  |                 <value>NoCredentials</value> | ||||||
|  |                 <value>UnknownUsername</value> | ||||||
|  |                 <value>CLIENT_NOT_FOUND</value> | ||||||
|  |                 <value>Client not found</value> | ||||||
|  |                 <value>Cannot get kdc for realm</value> | ||||||
|  |                 <value>Client not found in Kerberos database</value> | ||||||
|  |                 <value>DN_RESOLUTION_FAILURE</value> | ||||||
|  |                 <value>Cannot authenticate dn, invalid dn</value> | ||||||
|  |                 <value>Cannot authenticate dn, invalid credential</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 525</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="InvalidPassword"> | ||||||
|  |             <list> | ||||||
|  |                 <value>InvalidCredentials</value> | ||||||
|  |                 <value>PREAUTH_FAILED</value> | ||||||
|  |                 <value>INVALID_CREDENTIALS</value> | ||||||
|  |                 <value>Checksum failed</value> | ||||||
|  |                 <value>Integrity check on decrypted field failed</value> | ||||||
|  |                 <value>Pre-authentication information was invalid</value> | ||||||
|  |                 <value>Key bytes cannot be null</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 52e</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="AccountLocked"> | ||||||
|  |             <list> | ||||||
|  |                 <value>AccountLocked</value> | ||||||
|  |                 <value>Clients credentials have been revoked</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 775</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="AccountDisabled"> | ||||||
|  |             <list> | ||||||
|  |                 <value>AcceptSecurityContext error, data 533</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="ExpiredPassword"> | ||||||
|  |             <list> | ||||||
|  |                 <value>PASSWORD_EXPIRED</value> | ||||||
|  |                 <value>CLIENT KEY EXPIRED</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 532</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 773</value> | ||||||
|  |                 <value>AcceptSecurityContext error, data 701</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="ExpiringPassword"> | ||||||
|  |             <list> | ||||||
|  |                 <value>ACCOUNT_WARNING</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |         <entry key="RequestUnsupported"> | ||||||
|  |             <list> | ||||||
|  |                 <value>RequestUnsupported</value> | ||||||
|  |             </list> | ||||||
|  |         </entry> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										22
									
								
								conf/c14n/subject-c14n-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								conf/c14n/subject-c14n-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | <flow xmlns="http://www.springframework.org/schema/webflow" | ||||||
|  |       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |       xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow.xsd" | ||||||
|  |       abstract="true"> | ||||||
|  |  | ||||||
|  |     <!-- ADVANCED USE ONLY --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     You can ignore this file unless you are creating your own custom c14n subflows that want to | ||||||
|  |     report custom events in response to unusual error or warning conditions. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- Custom error events to reflect back from user-supplied c14n subflows. --> | ||||||
|  |      | ||||||
|  |     <!-- <end-state id="MyCustomEvent" /> --> | ||||||
|  |  | ||||||
|  |     <global-transitions> | ||||||
|  |         <!-- <transition on="MyCustomEvent" to="MyCustomEvent" /> --> | ||||||
|  |         <transition on="#{!'proceed'.equals(currentEvent.id)}" to="InvalidEvent" /> | ||||||
|  |     </global-transitions> | ||||||
|  |  | ||||||
|  | </flow> | ||||||
							
								
								
									
										40
									
								
								conf/c14n/subject-c14n.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								conf/c14n/subject-c14n.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | # Properties that control the behavior of post-login subject c14n flows. | ||||||
|  | # A few more advanced settings require XML configuration, see flow-specific docs. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Simple username -> principal name c14n | ||||||
|  | #idp.c14n.simple.lowercase = false | ||||||
|  | #idp.c14n.simple.uppercase = false | ||||||
|  | #idp.c14n.simple.trim = true | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Attribute resolution -> principal name c14n | ||||||
|  | #idp.c14n.attribute.lowercase = false | ||||||
|  | #idp.c14n.attribute.uppercase = false | ||||||
|  | #idp.c14n.attribute.trim = true | ||||||
|  | # Lists of attributes to resolve... | ||||||
|  | #idp.c14n.attribute.attributesToResolve = | ||||||
|  | #  and then select a principal name from | ||||||
|  | #idp.c14n.attribute.attributeSourceIds = | ||||||
|  | # Allows direct use of attributes via SAML proxy authn, bypasses resolver | ||||||
|  | #idp.c14n.attribute.resolveFromSubject = false | ||||||
|  | #idp.c14n.attribute.resolutionCondition = shibboleth.Conditions.TRUE | ||||||
|  |  | ||||||
|  | # X.509 certificate -> principal name c14n | ||||||
|  | #idp.c14n.x500.lowercase = false | ||||||
|  | #idp.c14n.x500.uppercase = false | ||||||
|  | #idp.c14n.x500.trim = true | ||||||
|  | # Precedence is to check for a subjectAltName and then an OID RDN | ||||||
|  | # Comma-delimited list of subjectAltName type numbers | ||||||
|  | #  (See https://tools.ietf.org/html/rfc5280#section-4.2.1.6) | ||||||
|  | #idp.c14n.x500.subjectAltNameTypes =  | ||||||
|  | # Comma-delimited list of OIDS | ||||||
|  | #idp.c14n.x500.objectIDs =  | ||||||
|  |  | ||||||
|  | # Proxied SAML NameID -> principal name c14n | ||||||
|  | #idp.c14n.saml.proxy.lowercase = false | ||||||
|  | #idp.c14n.saml.proxy.uppercase = false | ||||||
|  |  | ||||||
|  | # NameID consumption from SAML requests | ||||||
|  | #idp.c14n.saml.lowercase = false | ||||||
|  | #idp.c14n.saml.uppercase = false | ||||||
							
								
								
									
										151
									
								
								conf/c14n/subject-c14n.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								conf/c14n/subject-c14n.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,151 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |      | ||||||
|  |     <!-- ========================= Java Subject -> Principal Mapping ========================= --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     These are lists of Subject Canonicalization flows that turn complex Subject data into a string-based | ||||||
|  |     principal name that the rest of the IdP can operate on. They're used primarily after authentication | ||||||
|  |     and also during less common operations like SAML attribute queries, to map the SAML Subject into a | ||||||
|  |     principal name. | ||||||
|  |      | ||||||
|  |     Flows are identified with an ID that corresponds to a Spring Web Flow subflow name. | ||||||
|  |      | ||||||
|  |     Most of the simple settings that configure these flows are in subject-c14n.properties. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     ==================================================================== | ||||||
|  |     Flows used after authentication to produce canonical principal name. | ||||||
|  |     ==================================================================== | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.PostLoginSubjectCanonicalizationFlows"> | ||||||
|  |         <!-- | ||||||
|  |         This is an advanced post-login step that performs attribute resolution and then produces a username | ||||||
|  |         from an attribute value. To enable universally, just uncomment, but if you want it to run under more | ||||||
|  |         specific conditions, set an activationCondition property to a condition to apply.  | ||||||
|  |         --> | ||||||
|  |         <!-- <bean id="c14n/attribute" parent="shibboleth.PostLoginSubjectCanonicalizationFlow" /> --> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         This is an advanced option for use with SAML 2 proxy authentication to a second IdP that | ||||||
|  |         derives the principal name semi-directly from the incoming NameID value. It is functionally | ||||||
|  |         akin to the c14n/SAML2Transform flow for SAML Request scenarios, but separately defined so | ||||||
|  |         a suitably restrictive format list and/or condition can be applied to it.  | ||||||
|  |         --> | ||||||
|  |         <!-- <ref bean="c14n/SAML2ProxyTransform" /> --> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         This is an alternative that handles Subjects containing an X500Principal object and | ||||||
|  |         allows extraction from the DN. | ||||||
|  |         --> | ||||||
|  |         <ref bean="c14n/x500" /> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         This is the standard post-login step that returns a username derived from the login process. If you | ||||||
|  |         have more complex needs such as mapping a certificate DN into a principal name, an alternative may | ||||||
|  |         be required such as that above, but you can use this for simple transforms. | ||||||
|  |         --> | ||||||
|  |         <ref bean="c14n/simple" /> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- What SAML NameID formats do you want to support direct transformations for while proxying? --> | ||||||
|  |     <util:list id="shibboleth.ProxyNameTransformFormats"> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos</value> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Under what conditions should direct NameID mapping during proxying be allowed? By default, never. | ||||||
|  |     Any condition can be used here; the example is suitable for enumerating a number of IdPs to allow. | ||||||
|  |     --> | ||||||
|  |     <bean id="shibboleth.ProxyNameTransformPredicate" parent="shibboleth.Conditions.ProxyAuthentication"> | ||||||
|  |         <constructor-arg name="collection"> | ||||||
|  |             <list> | ||||||
|  |                 <!-- <value>https://idp-proxy.example.org</value> --> | ||||||
|  |             </list> | ||||||
|  |         </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Regular expression transforms to apply to incoming proxied subject names. The default empty list just | ||||||
|  |     echoes the name through unmodified. | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.ProxyNameTransforms"> | ||||||
|  |         <!-- | ||||||
|  |         <bean parent="shibboleth.Pair" p:first="^(.+)@example\.org$" p:second="$1" /> | ||||||
|  |         --> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     ======================================================================= | ||||||
|  |     Flows used during SAML requests to reverse-map NameIdentifiers/NameIDs. | ||||||
|  |     Below the list are some settings that might be useful to adjust. | ||||||
|  |     ======================================================================= | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.SAMLSubjectCanonicalizationFlows"> | ||||||
|  |  | ||||||
|  |         <!-- The next four are for handling transient IDs (in-storage and stateless variants). --> | ||||||
|  |         <ref bean="c14n/SAML2Transient" /> | ||||||
|  |         <ref bean="c14n/SAML2CryptoTransient" /> | ||||||
|  |         <ref bean="c14n/SAML1Transient" />  | ||||||
|  |         <ref bean="c14n/SAML1CryptoTransient" />  | ||||||
|  |          | ||||||
|  |         <!-- Handle a SAML 2 persistent ID, provided a stored strategy is in use. --> | ||||||
|  |         <!-- <ref bean="c14n/SAML2Persistent" /> --> | ||||||
|  |          | ||||||
|  |         <!-- | ||||||
|  |         Finally we have beans for decoding arbitrary SAML formats directly. By default, these are turned off, | ||||||
|  |         having *no* circumstances for which they apply (see shibboleth.TransformNamePredicate below). | ||||||
|  |         --> | ||||||
|  |         <ref bean="c14n/SAML2Transform" /> | ||||||
|  |         <ref bean="c14n/SAML1Transform" /> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- What SAML NameID formats do you want to support direct transformations for? --> | ||||||
|  |     <util:list id="shibboleth.NameTransformFormats"> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName</value> | ||||||
|  |         <value>urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Under what conditions should direct NameID mapping be allowed? By default, never. | ||||||
|  |     Any condition can be used here; the example is suitable for enumerating a number of SPs to allow. | ||||||
|  |     --> | ||||||
|  |     <bean id="shibboleth.NameTransformPredicate" parent="shibboleth.Conditions.RelyingPartyId"> | ||||||
|  |         <constructor-arg name="candidates"> | ||||||
|  |             <list> | ||||||
|  |                 <!-- <value>https://sp.example.org</value> --> | ||||||
|  |             </list> | ||||||
|  |         </constructor-arg> | ||||||
|  |     </bean> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Regular expression transforms to apply to incoming subject names. The default empty list just | ||||||
|  |     echoes the name through unmodified. | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.NameTransforms"> | ||||||
|  |         <!-- | ||||||
|  |         <bean parent="shibboleth.Pair" p:first="^(.+)@example\.org$" p:second="$1" /> | ||||||
|  |         --> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										68
									
								
								conf/credentials.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								conf/credentials.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     NOTE: if you're using a legacy relying-party.xml file from a V2 configuration, this file is ignored. | ||||||
|  |  | ||||||
|  |     This defines the signing and encryption key and certificate pairs referenced by your relying-party.xml | ||||||
|  |     configuration. You don't normally need to touch this, unless you have advanced requirements such as | ||||||
|  |     supporting multiple sets of keys for different relying parties, in which case you may want to define | ||||||
|  |     all your credentials here for convenience. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     The list of ALL of your IdP's signing credentials. If you define additional signing credentials, | ||||||
|  |     for example for specific relying parties or different key types, make sure to include them within this list. | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.SigningCredentials"> | ||||||
|  |         <ref bean="shibboleth.DefaultSigningCredential" /> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <!-- Your IdP's default signing key, set via property file. --> | ||||||
|  |     <bean id="shibboleth.DefaultSigningCredential" | ||||||
|  |         class="net.shibboleth.idp.profile.spring.factory.BasicX509CredentialFactoryBean" | ||||||
|  |         p:privateKeyResource="%{idp.signing.key}" | ||||||
|  |         p:certificateResource="%{idp.signing.cert}" | ||||||
|  |         p:entityId-ref="entityID" /> | ||||||
|  |          | ||||||
|  |     <!-- Your IdP's default client TLS credential, by default the same as the default signing credential. --> | ||||||
|  |     <alias alias="shibboleth.DefaultClientTLSCredential" name="shibboleth.DefaultSigningCredential" /> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     The list of ALL of your IdP's encryption credentials. By default this is just an alias | ||||||
|  |     for 'shibboleth.DefaultEncryptionCredentials'. It could be re-defined as | ||||||
|  |     a list with additional credentials if needed. | ||||||
|  |     --> | ||||||
|  |     <alias alias="shibboleth.EncryptionCredentials" name="shibboleth.DefaultEncryptionCredentials" /> | ||||||
|  |          | ||||||
|  |     <!-- Your IdP's default encryption (really decryption) keys, set via property file. --> | ||||||
|  |     <util:list id="shibboleth.DefaultEncryptionCredentials"> | ||||||
|  |         <bean class="net.shibboleth.idp.profile.spring.factory.BasicX509CredentialFactoryBean" | ||||||
|  |             p:privateKeyResource="%{idp.encryption.key}" | ||||||
|  |             p:certificateResource="%{idp.encryption.cert}" | ||||||
|  |             p:entityId-ref="entityID" /> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         For key rollover, uncomment and point to your original keypair, and use the one above | ||||||
|  |         to point to your new keypair. Once metadata has propagated, comment this one out again. | ||||||
|  |         --> | ||||||
|  |         <!-- | ||||||
|  |         <bean class="net.shibboleth.idp.profile.spring.factory.BasicX509CredentialFactoryBean" | ||||||
|  |             p:privateKeyResource="%{idp.encryption.key.2}" | ||||||
|  |             p:certificateResource="%{idp.encryption.cert.2}" | ||||||
|  |             p:entityId-ref="entityID" /> | ||||||
|  |         --> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										126
									
								
								conf/errors.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								conf/errors.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |     xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |     xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |     xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |  | ||||||
|  |     default-init-method="initialize" | ||||||
|  |     default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <bean id="shibboleth.DefaultErrorView" class="java.lang.String" c:_0="%{idp.errors.defaultView:error}" /> | ||||||
|  |  | ||||||
|  |     <!-- Map local events to alternate view templates. --> | ||||||
|  |     <util:map id="shibboleth.EventViewMap"> | ||||||
|  |         <!-- <entry key="EventToChange" value="viewname" /> --> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Map of events to trap and handle with local views, without returning to SPs. | ||||||
|  |     The map values are flags indicating whether to write an audit log record. | ||||||
|  |     --> | ||||||
|  |     <util:map id="shibboleth.LocalEventMap"> | ||||||
|  |         <entry key="ContextCheckDenied" value="true" /> | ||||||
|  |         <entry key="ImpersonationViolation" value="true" /> | ||||||
|  |         <entry key="AttributeReleaseRejected" value="true" /> | ||||||
|  |         <entry key="TermsRejected" value="true" /> | ||||||
|  |         <entry key="EndpointResolutionFailed" value="true" /> | ||||||
|  |         <entry key="RuntimeException" value="false" /> | ||||||
|  |         <entry key="InvalidEvent" value="false" /> | ||||||
|  |         <entry key="InvalidCSRFToken" value="false" /> | ||||||
|  |         <!-- | ||||||
|  |         <entry key="IdentitySwitch" value="false" /> | ||||||
|  |         <entry key="NoPotentialFlow" value="false" /> | ||||||
|  |         --> | ||||||
|  |     </util:map> | ||||||
|  |      | ||||||
|  |     <!-- Mappings of error events during requests to SAML status codes and SOAP fault codes. --> | ||||||
|  |  | ||||||
|  |     <util:map id="shibboleth.SAML1StatusMappings"> | ||||||
|  |         <entry key="InvalidMessageVersion" value-ref="shibboleth.SAML1Status.VersionMismatch" /> | ||||||
|  |          | ||||||
|  |         <entry key="UnableToDecode" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |          | ||||||
|  |         <entry key="UnableToEncode" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |  | ||||||
|  |         <entry key="MessageReplay" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="MessageExpired" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="MessageAuthenticationError" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |  | ||||||
|  |         <entry key="RequestUnsupported" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |          | ||||||
|  |         <entry key="NoPassive" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="NoPotentialFlow" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="NoCredentials" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="InvalidCredentials" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="AccountError" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="IdentitySwitch" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="AuthenticationException" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |          | ||||||
|  |         <entry key="InvalidSubject" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |         <entry key="SubjectCanonicalizationError" value-ref="shibboleth.SAML1Status.Requester" /> | ||||||
|  |     </util:map> | ||||||
|  |      | ||||||
|  |     <util:map id="shibboleth.SAML2StatusMappings"> | ||||||
|  |         <entry key="InvalidMessageVersion" value-ref="shibboleth.SAML2Status.VersionMismatch" /> | ||||||
|  |          | ||||||
|  |         <entry key="UnableToDecode" value-ref="shibboleth.SAML2Status.RequestUnsupported" /> | ||||||
|  |          | ||||||
|  |         <entry key="UnableToEncode" value-ref="shibboleth.SAML2Status.UnsupportedBinding" /> | ||||||
|  |  | ||||||
|  |         <entry key="AccessDenied" value-ref="shibboleth.SAML2Status.RequestDenied" /> | ||||||
|  |         <entry key="MessageReplay" value-ref="shibboleth.SAML2Status.RequestDenied" /> | ||||||
|  |         <entry key="MessageExpired" value-ref="shibboleth.SAML2Status.RequestDenied" /> | ||||||
|  |         <entry key="MessageAuthenticationError" value-ref="shibboleth.SAML2Status.RequestDenied" /> | ||||||
|  |          | ||||||
|  |         <entry key="RequestUnsupported" value-ref="shibboleth.SAML2Status.NoAuthnContext" /> | ||||||
|  |          | ||||||
|  |         <entry key="NoPassive" value-ref="shibboleth.SAML2Status.NoPassive" /> | ||||||
|  |          | ||||||
|  |         <entry key="NoPotentialFlow" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |         <entry key="NoCredentials" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |         <entry key="InvalidCredentials" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |         <entry key="AccountError" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |         <entry key="IdentitySwitch" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |         <entry key="AuthenticationException" value-ref="shibboleth.SAML2Status.AuthnFailed" /> | ||||||
|  |          | ||||||
|  |         <entry key="InvalidSubject" value-ref="shibboleth.SAML2Status.UnknownPrincipal" /> | ||||||
|  |         <entry key="SubjectCanonicalizationError" value-ref="shibboleth.SAML2Status.UnknownPrincipal" /> | ||||||
|  |         <entry key="SessionNotFound" value-ref="shibboleth.SAML2Status.UnknownPrincipal" /> | ||||||
|  |          | ||||||
|  |         <entry key="InvalidNameIDPolicy" value-ref="shibboleth.SAML2Status.InvalidNameIDPolicy" /> | ||||||
|  |         <entry key="ProxyCountExceeded" value-ref="shibboleth.SAML2Status.ProxyCountExceeded" /> | ||||||
|  |          | ||||||
|  |         <entry key="ChannelBindingsError" value-ref="shibboleth.SAML2Status.ChannelBindingsError" /> | ||||||
|  |     </util:map> | ||||||
|  |  | ||||||
|  |     <util:map id="shibboleth.SOAPFaultCodeMappings"> | ||||||
|  |         <entry key="InvalidMessageVersion" value-ref="shibboleth.SOAP.VersionMismatch" /> | ||||||
|  |          | ||||||
|  |         <entry key="UnableToDecode" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |  | ||||||
|  |         <entry key="MessageReplay" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="MessageExpired" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="MessageAuthenticationError" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |          | ||||||
|  |         <entry key="RequestUnsupported" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |      | ||||||
|  |         <entry key="NoPassive" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |          | ||||||
|  |         <entry key="NoPotentialFlow" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="NoCredentials" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="InvalidCredentials" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="AccountError" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="AuthenticationException" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |  | ||||||
|  |         <entry key="InvalidSubject" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |         <entry key="SubjectCanonicalizationError" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |          | ||||||
|  |         <entry key="InvalidNameIDPolicy" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |          | ||||||
|  |         <entry key="ChannelBindingsError" value-ref="shibboleth.SOAP.Client" /> | ||||||
|  |     </util:map> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										107
									
								
								conf/examples/attribute-resolver-ldap.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								conf/examples/attribute-resolver-ldap.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- | ||||||
|  |     This file is an EXAMPLE configuration file containing some example attributes | ||||||
|  |     based on some commonly used approaches when LDAP is the principal data source. | ||||||
|  |       | ||||||
|  |     Not all attribute definitions or data connectors are demonstrated, but some | ||||||
|  |     LDAP attributes common to Shibboleth deployments (and some not so common) are | ||||||
|  |     included. | ||||||
|  |  | ||||||
|  |     This example is in no way usable as a substitute for reading the documentation.     | ||||||
|  | --> | ||||||
|  | <AttributeResolver | ||||||
|  |         xmlns="urn:mace:shibboleth:2.0:resolver" | ||||||
|  |         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |         xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"> | ||||||
|  |  | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |     <!--      Attribute Definitions                 --> | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |  | ||||||
|  |     <!-- Simple attributes are exported directly from the LDAP connector. --> | ||||||
|  |  | ||||||
|  |     <!-- eduPerson attributes requiring post-lookup manipulation --> | ||||||
|  | <!--  | ||||||
|  |  | ||||||
|  |     <AttributeDefinition xsi:type="Prescoped" id="eduPersonPrincipalName"> | ||||||
|  |         <InputDataConnector ref="myLDAP" attributeNames="eduPersonPrincipalName"/> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |     <AttributeDefinition xsi:type="Prescoped" id="eduPersonPrincipalNamePrior"> | ||||||
|  |         <InputDataConnector ref="myLDAP" attributeNames="eduPersonPrincipalNamePrior"/> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |     <AttributeDefinition xsi:type="Scoped" id="eduPersonScopedAffiliation" scope="%{idp.scope}"> | ||||||
|  |         <InputDataConnector ref="myLDAP" attributeNames="eduPersonAffiliation"/> | ||||||
|  |     </AttributeDefinition> | ||||||
|  | --> | ||||||
|  |  | ||||||
|  |     <!-- Schema: SAML Subject ID Attributes --> | ||||||
|  | <!-- | ||||||
|  |     <AttributeDefinition xsi:type="Scoped" id="samlSubjectID" scope="%{idp.scope}"> | ||||||
|  |         <InputDataConnector ref="myLDAP" attributeNames="%{idp.persistentId.sourceAttribute}"/> | ||||||
|  |     </AttributeDefinition> | ||||||
|  |  | ||||||
|  |     <AttributeDefinition xsi:type="Scoped" id="samlPairwiseID" scope="%{idp.scope}"> | ||||||
|  |         <InputDataConnector ref="computed" attributeNames="computedId"/> | ||||||
|  |     </AttributeDefinition> | ||||||
|  | --> | ||||||
|  |  | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |     <!--      Data Connectors                       --> | ||||||
|  |     <!-- ========================================== --> | ||||||
|  |  | ||||||
|  |     <!-- Example LDAP Connector --> | ||||||
|  |  | ||||||
|  |     <DataConnector id="myLDAP" xsi:type="LDAPDirectory" | ||||||
|  |         ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}" | ||||||
|  |         baseDN="%{idp.attribute.resolver.LDAP.baseDN}"  | ||||||
|  |         principal="%{idp.attribute.resolver.LDAP.bindDN}" | ||||||
|  |         principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}" | ||||||
|  |         useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}" | ||||||
|  |         connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}" | ||||||
|  |         trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}" | ||||||
|  |         responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}" | ||||||
|  |         connectionStrategy="%{idp.attribute.resolver.LDAP.connectionStrategy}" | ||||||
|  |         noResultIsError="true" | ||||||
|  |         multipleResultsIsError="true" | ||||||
|  |         excludeResolutionPhases="c14n/attribute" | ||||||
|  |         exportAttributes="mail displayName sn givenName departmentNumber employeeNumber eduPersonEntitlement eduPersonAssurance"> | ||||||
|  |         <FilterTemplate> | ||||||
|  |             <![CDATA[ | ||||||
|  |                 %{idp.attribute.resolver.LDAP.searchFilter} | ||||||
|  |             ]]> | ||||||
|  |         </FilterTemplate> | ||||||
|  |         <ConnectionPool | ||||||
|  |             minPoolSize="%{idp.pool.LDAP.minSize:3}" | ||||||
|  |             maxPoolSize="%{idp.pool.LDAP.maxSize:10}" | ||||||
|  |             blockWaitTime="%{idp.pool.LDAP.blockWaitTime:PT3S}" | ||||||
|  |             validatePeriodically="%{idp.pool.LDAP.validatePeriodically:true}" | ||||||
|  |             validateTimerPeriod="%{idp.pool.LDAP.validatePeriod:PT5M}" | ||||||
|  |             validateDN="%{idp.pool.LDAP.validateDN:}" | ||||||
|  |             validateOnCheckout="%{idp.pool.LDAP.validateOnCheckout:false}" | ||||||
|  |             validateFilter="%{idp.pool.LDAP.validateFilter:(objectClass=*)}" | ||||||
|  |             prunePeriod="%{idp.pool.LDAP.prunePeriod:PT5M}" | ||||||
|  |             expirationTime="%{idp.pool.LDAP.idleTime:PT10M}"/> | ||||||
|  |     </DataConnector> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     DataConnector for pairwise-id (example depends in part on saml-nameid.properties). | ||||||
|  |     Note that this relies on BASE32 encoding in accordance with the attribute definition. | ||||||
|  |     Older uses of this plugin for legacy eduPersonTargetedID/NameID values may require | ||||||
|  |     different settings. | ||||||
|  |     --> | ||||||
|  | <!--  | ||||||
|  |     <DataConnector id="computed" xsi:type="ComputedId" | ||||||
|  |         excludeResolutionPhases="c14n/attribute" | ||||||
|  | 	    generatedAttributeID="computedId" | ||||||
|  | 	    salt="%{idp.persistentId.salt}" | ||||||
|  | 	    algorithm="%{idp.persistentId.algorithm:SHA}" | ||||||
|  |         encoding="BASE32"> | ||||||
|  | 	     | ||||||
|  |         <InputDataConnector ref="myLDAP" attributeNames="%{idp.persistentId.sourceAttribute}" /> | ||||||
|  |          | ||||||
|  | 	</DataConnector> | ||||||
|  | --> | ||||||
|  |  | ||||||
|  | </AttributeResolver> | ||||||
							
								
								
									
										52
									
								
								conf/global.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								conf/global.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- Use this file to define any custom beans needed globally. --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Algorithm include/exclude sets that override or merge with library defaults. Normally you can leave these | ||||||
|  |     empty or commented and use the system defaults, but you can override those defaults using these beans. | ||||||
|  |     Each <value> element is an algorithm URI; you can also use <util:constant> elements in place of literal values. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     <util:set id="shibboleth.IncludedSignatureAlgorithms"> | ||||||
|  |     </util:set> | ||||||
|  |  | ||||||
|  |     <util:set id="shibboleth.ExcludedSignatureAlgorithms"> | ||||||
|  |     </util:set> | ||||||
|  |  | ||||||
|  |     <util:set id="shibboleth.IncludedEncryptionAlgorithms"> | ||||||
|  |     </util:set> | ||||||
|  |  | ||||||
|  |     <util:set id="shibboleth.ExcludedEncryptionAlgorithms"> | ||||||
|  |     </util:set> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     If you need to define and inject custom Java object(s) into the various views used throughout the | ||||||
|  |     system (errors, login, logout, etc.), you can uncomment and define the bean below to be of any | ||||||
|  |     type required. It will appear in the view scope as a variable named "custom". | ||||||
|  |      | ||||||
|  |     The example below defines the bean as a map, which allows you to inject multiple objects under | ||||||
|  |     named keys to expand the feature to support multiple injected objects. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     <util:map id="shibboleth.CustomViewContext"> | ||||||
|  |         <entry key="foo" value="bar"/> | ||||||
|  |     </util:map> | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										244
									
								
								conf/idp.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								conf/idp.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,244 @@ | |||||||
|  | # Auto-load all files matching conf/**/*.properties | ||||||
|  | # Disable if you want to manually maintain a list of sources. | ||||||
|  | idp.searchForProperties=true | ||||||
|  |  | ||||||
|  | # Load any "outside-tree" property sources from a comma-delimited list | ||||||
|  | idp.additionalProperties=/credentials/secrets.properties | ||||||
|  |  | ||||||
|  | # In most cases (and unless noted in the surrounding comments) the | ||||||
|  | # commented settings in the distributed files document default behavior. | ||||||
|  | # Uncomment them and change the value to change functionality. | ||||||
|  | # | ||||||
|  | # Uncommented properties are either required or ship non-defaulted. | ||||||
|  |  | ||||||
|  | # Set the entityID of the IdP | ||||||
|  | idp.entityID=https://idp-cluster.mafoo.org.uk/idp/storedid | ||||||
|  |  | ||||||
|  | # Set the file path which backs the IdP's own metadata publishing endpoint at /shibboleth. | ||||||
|  | # Set to empty value to disable and return a 404. | ||||||
|  | #idp.entityID.metadataFile=%{idp.home}/metadata/idp-metadata.xml | ||||||
|  |  | ||||||
|  | # Set the scope used in the attribute resolver for scoped attributes  | ||||||
|  | idp.scope=dev.mafoo.org.uk | ||||||
|  |  | ||||||
|  | # General cookie properties (maxAge only applies to persistent cookies) | ||||||
|  | #idp.cookie.secure = true | ||||||
|  | #idp.cookie.httpOnly = true | ||||||
|  | #idp.cookie.domain = | ||||||
|  | #idp.cookie.path = | ||||||
|  | #idp.cookie.maxAge = 31536000 | ||||||
|  | # These control operation of the SameSite filter, which is off by default. | ||||||
|  | #idp.cookie.sameSite = None | ||||||
|  | #idp.cookie.sameSiteCondition = shibboleth.Conditions.FALSE | ||||||
|  |  | ||||||
|  | # Enable cross-site request forgery mitigation for views.  | ||||||
|  | idp.csrf.enabled=true | ||||||
|  | # Name of the HTTP parameter that stores the CSRF token. | ||||||
|  | #idp.csrf.token.parameter = csrf_token | ||||||
|  |  | ||||||
|  | # HSTS/CSP response headers | ||||||
|  | #idp.hsts = max-age=0 | ||||||
|  | # X-Frame-Options value, set to DENY or SAMEORIGIN to block framing | ||||||
|  | #idp.frameoptions = DENY | ||||||
|  | # Content-Security-Policy value, set to match X-Frame-Options default | ||||||
|  | #idp.csp = frame-ancestors 'none'; | ||||||
|  |  | ||||||
|  | # Set the location of user-supplied web flow definitions | ||||||
|  | #idp.webflows = %{idp.home}/flows | ||||||
|  |  | ||||||
|  | # Set the location of Velocity view templates | ||||||
|  | #idp.views = %{idp.home}/views | ||||||
|  |  | ||||||
|  | # Do we fail on velocity "syntax errors" | ||||||
|  | #idp.velocity.runtime.strictmode=false | ||||||
|  |  | ||||||
|  | # Settings for internal AES encryption key | ||||||
|  | #idp.sealer.keyStrategy = shibboleth.DataSealerKeyStrategy | ||||||
|  | #idp.sealer.storeType = JCEKS | ||||||
|  | #idp.sealer.updateInterval = PT15M | ||||||
|  | #idp.sealer.aliasBase = secret | ||||||
|  | idp.sealer.storeResource=%{idp.home}/credentials/sealer.jks | ||||||
|  | idp.sealer.versionResource=%{idp.home}/credentials/sealer.kver | ||||||
|  |  | ||||||
|  | # Settings for public/private signing and encryption key(s) | ||||||
|  | # During decryption key rollover, point the ".2" properties at a second | ||||||
|  | # keypair, uncomment in credentials.xml, then publish it in your metadata. | ||||||
|  | idp.signing.key=%{idp.home}/credentials/idp-signing.key | ||||||
|  | idp.signing.cert=%{idp.home}/credentials/idp-signing.crt | ||||||
|  | idp.encryption.key=%{idp.home}/credentials/idp-encryption.key | ||||||
|  | idp.encryption.cert=%{idp.home}/credentials/idp-encryption.crt | ||||||
|  | #idp.encryption.key.2 = %{idp.home}/credentials/idp-encryption-old.key | ||||||
|  | #idp.encryption.cert.2 = %{idp.home}/credentials/idp-encryption-old.crt | ||||||
|  |  | ||||||
|  | # Sets the bean ID to use as a default security configuration set | ||||||
|  | #idp.security.config = shibboleth.DefaultSecurityConfiguration | ||||||
|  |  | ||||||
|  | # To downgrade to SHA-1, set to shibboleth.SigningConfiguration.SHA1 | ||||||
|  | #idp.signing.config = shibboleth.SigningConfiguration.SHA256 | ||||||
|  |  | ||||||
|  | # The new install default for encryption is now AES-GCM. | ||||||
|  | idp.encryption.config=shibboleth.EncryptionConfiguration.GCM | ||||||
|  |  | ||||||
|  | # Sets the default strategy for key agreement key wrap usage for credentials from metadata, | ||||||
|  | # if not otherwise configured on the security configuration | ||||||
|  | #idp.encryption.keyagreement.metadata.defaultUseKeyWrap = Default | ||||||
|  |  | ||||||
|  | # Configures trust evaluation of keys used by services at runtime | ||||||
|  | # Internal default is Chaining, overriden for new installs | ||||||
|  | idp.trust.signatures=shibboleth.ExplicitKeySignatureTrustEngine | ||||||
|  | # Other options: | ||||||
|  | #   shibboleth.ChainingSignatureTrustEngine, shibboleth.PKIXSignatureTrustEngine | ||||||
|  | idp.trust.certificates=shibboleth.ExplicitKeyX509TrustEngine | ||||||
|  | # Other options: | ||||||
|  | #   shibboleth.ChainingX509TrustEngine, shibboleth.PKIXX509TrustEngine | ||||||
|  |  | ||||||
|  | # If true, encryption will happen whenever a key to use can be located, but | ||||||
|  | # failure to encrypt won't result in request failure. | ||||||
|  | #idp.encryption.optional = false | ||||||
|  |  | ||||||
|  | # Configuration of client- and server-side storage plugins | ||||||
|  | #idp.storage.cleanupInterval = PT10M | ||||||
|  | idp.storage.htmlLocalStorage=true | ||||||
|  | #idp.storage.clientSessionStorageName = shib_idp_session_ss | ||||||
|  | #idp.storage.clientPersistentStorageName = shib_idp_persistent_ss | ||||||
|  |  | ||||||
|  | # Set to true to expose more detailed errors in responses to SPs | ||||||
|  | #idp.errors.detailed = false | ||||||
|  | # Set to false to skip signing of SAML response messages that signal errors | ||||||
|  | #idp.errors.signed = true | ||||||
|  | # Name of bean containing a list of Java exception classes to ignore | ||||||
|  | #idp.errors.excludedExceptions = ExceptionClassListBean | ||||||
|  | # Name of bean containing a property set mapping exception names to views | ||||||
|  | #idp.errors.exceptionMappings = ExceptionToViewPropertyBean | ||||||
|  | # Set if a different default view name for events and exceptions is needed | ||||||
|  | #idp.errors.defaultView = error | ||||||
|  |  | ||||||
|  | # Set to false to disable the IdP session layer | ||||||
|  | #idp.session.enabled = true | ||||||
|  |  | ||||||
|  | # Set to "shibboleth.StorageService" for server-side storage of user sessions | ||||||
|  | #idp.session.StorageService = shibboleth.ClientSessionStorageService | ||||||
|  |  | ||||||
|  | # Name of cookie used for session | ||||||
|  | #idp.session.cookieName = shib_idp_session | ||||||
|  | # Size of session IDs | ||||||
|  | #idp.session.idSize = 32 | ||||||
|  | # Bind sessions to IP addresses | ||||||
|  | #idp.session.consistentAddress = true | ||||||
|  | # Inactivity timeout | ||||||
|  | #idp.session.timeout = PT60M | ||||||
|  | # Extra time to store sessions for logout | ||||||
|  | #idp.session.slop = PT0S | ||||||
|  | # Tolerate storage-related errors | ||||||
|  | #idp.session.maskStorageFailure = false | ||||||
|  | # Track information about SPs logged into | ||||||
|  | idp.session.trackSPSessions=true | ||||||
|  | # Support lookup by SP for SAML logout | ||||||
|  | idp.session.secondaryServiceIndex=true | ||||||
|  | # Length of time to track SP sessions | ||||||
|  | #idp.session.defaultSPlifetime = PT2H | ||||||
|  |  | ||||||
|  | # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent | ||||||
|  | #idp.consent.StorageService = shibboleth.ClientPersistentStorageService | ||||||
|  |  | ||||||
|  | # Default consent auditing formats | ||||||
|  | #idp.consent.terms-of-use.auditFormat = %T|%SP|%e|%u|%CCI|%CCV|%CCA | ||||||
|  | #idp.consent.attribute-release.auditFormat = %T|%SP|%e|%u|%CCI|%CCV|%CCA | ||||||
|  |  | ||||||
|  | # Set to "shibboleth.consent.AttributeConsentStorageKey" to use an attribute | ||||||
|  | # to key user consent storage records (and set the attribute name) | ||||||
|  | #idp.consent.attribute-release.userStorageKey = shibboleth.consent.PrincipalConsentStorageKey | ||||||
|  | #idp.consent.attribute-release.userStorageKeyAttribute = uid | ||||||
|  | #idp.consent.terms-of-use.userStorageKey = shibboleth.consent.PrincipalConsentStorageKey | ||||||
|  | #idp.consent.terms-of-use.userStorageKeyAttribute = uid | ||||||
|  |  | ||||||
|  | # Suffix of message property used as value of consent storage records when idp.consent.compareValues is true. | ||||||
|  | # Defaults to text displayed to the user. | ||||||
|  | #idp.consent.terms-of-use.consentValueMessageCodeSuffix = .text | ||||||
|  |  | ||||||
|  | # Flags controlling how built-in attribute consent feature operates  | ||||||
|  | #idp.consent.allowDoNotRemember = true | ||||||
|  | #idp.consent.allowGlobal = true | ||||||
|  | #idp.consent.allowPerAttribute = false | ||||||
|  |  | ||||||
|  | # Whether attribute values and terms of use text are compared | ||||||
|  | #idp.consent.compareValues = false | ||||||
|  | # Maximum number of consent records for space-limited storage (e.g. cookies) | ||||||
|  | #idp.consent.maxStoredRecords = 10 | ||||||
|  | # Maximum number of consent records for larger/server-side storage (0 = no limit) | ||||||
|  | #idp.consent.expandedMaxStoredRecords = 0 | ||||||
|  |  | ||||||
|  | # Time in milliseconds to expire consent storage records. | ||||||
|  | # Leave commented out for the default of infinite | ||||||
|  | #idp.consent.storageRecordLifetime = | ||||||
|  |  | ||||||
|  | # Path to use with External interceptor flow | ||||||
|  | #idp.intercept.External.externalPath = contextRelative:intercept.jsp | ||||||
|  |  | ||||||
|  | # Policies to use with Impersonate interceptor flow | ||||||
|  | #idp.impersonate.generalPolicy = GeneralImpersonationPolicy | ||||||
|  | #idp.impersonate.specificPolicy = SpecificImpersonationPolicy | ||||||
|  |  | ||||||
|  | # Picks outbound bindings more sensibly than based on metadata order | ||||||
|  | idp.bindings.inMetadataOrder=false | ||||||
|  |  | ||||||
|  | # Whether to lookup metadata, etc. for every SP involved in a logout | ||||||
|  | # for use by user interface logic; adds overhead so off by default. | ||||||
|  | #idp.logout.elaboration = false | ||||||
|  |  | ||||||
|  | # Whether to require logout requests/responses be signed/authenticated. | ||||||
|  | #idp.logout.authenticated = true | ||||||
|  |  | ||||||
|  | # Whether to handle logout lacking response endpoonts as asynchronous. | ||||||
|  | #idp.logout.assumeAsync = false | ||||||
|  |  | ||||||
|  | # Whether to hide logout propagation status reporting. | ||||||
|  | #idp.logout.propagationHidden = false | ||||||
|  |  | ||||||
|  | # Bean to determine whether user should be allowed to cancel logout | ||||||
|  | #idp.logout.promptUser=shibboleth.Conditions.FALSE | ||||||
|  |  | ||||||
|  | # Message freshness and replay cache tuning | ||||||
|  | #idp.policy.messageLifetime = PT3M | ||||||
|  | #idp.policy.assertionLifetime = PT3M | ||||||
|  | #idp.policy.clockSkew = PT3M | ||||||
|  |  | ||||||
|  | # Set to custom bean for alternate storage of replay cache | ||||||
|  | #idp.replayCache.StorageService = shibboleth.StorageService | ||||||
|  | #idp.replayCache.strict = true | ||||||
|  |  | ||||||
|  | # Toggles whether to allow outbound messages via SAML artifact | ||||||
|  | #idp.artifact.enabled = true | ||||||
|  | # Suppresses typical signing/encryption when artifact binding used | ||||||
|  | #idp.artifact.secureChannel = true | ||||||
|  | # May differ to direct SAML 2 artifact lookups to specific server nodes | ||||||
|  | #idp.artifact.endpointIndex = 2 | ||||||
|  | # Set to custom bean for alternate storage of artifact map state | ||||||
|  | #idp.artifact.StorageService = shibboleth.StorageService | ||||||
|  |  | ||||||
|  | # Comma-delimited languages to use if not match can be found with the | ||||||
|  | # browser-supported languages, defaults to an empty list. | ||||||
|  | idp.ui.fallbackLanguages=en,fr,de | ||||||
|  |  | ||||||
|  | # Storage service used by CAS protocol for chained proxy-granting tickets | ||||||
|  | # and when using server-managed "simple" TicketService. | ||||||
|  | # Defaults to shibboleth.StorageService (in-memory) | ||||||
|  | # MUST be server-side storage (e.g. in-memory, memcached, database) | ||||||
|  | #idp.cas.StorageService=shibboleth.StorageService | ||||||
|  |  | ||||||
|  | # CAS service registry implementation class | ||||||
|  | #idp.cas.serviceRegistryClass=net.shibboleth.idp.cas.service.PatternServiceRegistry | ||||||
|  |  | ||||||
|  | # If true, CAS services provisioned with SAML metadata are identified via entityID | ||||||
|  | #idp.cas.relyingPartyIdFromMetadata=false | ||||||
|  |  | ||||||
|  | # F-TICKS auditing - set a salt to include hashed username | ||||||
|  | #idp.fticks.federation = MyFederation | ||||||
|  | #idp.fticks.condition = MyFTICKSCondition | ||||||
|  | #idp.fticks.algorithm = SHA-256 | ||||||
|  | #idp.fticks.salt = somethingsecret | ||||||
|  | #idp.fticks.loghost = localhost | ||||||
|  | #idp.fticks.logport = 514 | ||||||
|  |  | ||||||
|  | # Set false if you want SAML bindings "spelled out" in audit log | ||||||
|  | idp.audit.shortenBindings=true | ||||||
							
								
								
									
										20
									
								
								conf/intercept/intercept-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								conf/intercept/intercept-events-flow.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | <flow xmlns="http://www.springframework.org/schema/webflow" | ||||||
|  |       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |       xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow.xsd" | ||||||
|  |       abstract="true"> | ||||||
|  |  | ||||||
|  |     <!-- ADVANCED USE ONLY --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     You can ignore this file unless you are creating your own custom intercept subflows that want to | ||||||
|  |     report custom events in response to unusual conditions. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- <end-state id="MyCustomEvent" /> --> | ||||||
|  |  | ||||||
|  |     <global-transitions> | ||||||
|  |         <!-- <transition on="MyCustomEvent" to="MyCustomEvent" /> --> | ||||||
|  |         <transition on="#{!'proceed'.equals(currentEvent.id)}" to="InvalidEvent" /> | ||||||
|  |     </global-transitions> | ||||||
|  |  | ||||||
|  | </flow> | ||||||
							
								
								
									
										67
									
								
								conf/ldap.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								conf/ldap.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | # LDAP authentication (and possibly attribute resolver) configuration | ||||||
|  | # Note, this doesn't apply to the use of JAAS authentication via LDAP | ||||||
|  |  | ||||||
|  | ## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator | ||||||
|  | #idp.authn.LDAP.authenticator                   = anonSearchAuthenticator | ||||||
|  |  | ||||||
|  | ## Connection properties ## | ||||||
|  | idp.authn.LDAP.ldapURL                          = ldap://localhost:10389 | ||||||
|  | #idp.authn.LDAP.useStartTLS                     = true | ||||||
|  | # Time in milliseconds that connects will block | ||||||
|  | #idp.authn.LDAP.connectTimeout                  = PT3S | ||||||
|  | # Time in milliseconds to wait for responses | ||||||
|  | #idp.authn.LDAP.responseTimeout                 = PT3S | ||||||
|  | # Connection strategy to use when multiple URLs are supplied, either ACTIVE_PASSIVE, ROUND_ROBIN, RANDOM | ||||||
|  | #idp.authn.LDAP.connectionStrategy               = ACTIVE_PASSIVE | ||||||
|  |  | ||||||
|  | ## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust | ||||||
|  | #idp.authn.LDAP.sslConfig                       = certificateTrust | ||||||
|  | ## If using certificateTrust above, set to the trusted certificate's path | ||||||
|  | idp.authn.LDAP.trustCertificates                = %{idp.home}/credentials/ldap-server.crt | ||||||
|  | ## If using keyStoreTrust above, set to the truststore path | ||||||
|  | idp.authn.LDAP.trustStore                       = %{idp.home}/credentials/ldap-server.truststore | ||||||
|  |  | ||||||
|  | ## Return attributes during authentication | ||||||
|  | idp.authn.LDAP.returnAttributes                 = passwordExpirationTime,loginGraceRemaining | ||||||
|  |  | ||||||
|  | ## DN resolution properties ## | ||||||
|  |  | ||||||
|  | # Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator | ||||||
|  | # for AD: CN=Users,DC=example,DC=org | ||||||
|  | idp.authn.LDAP.baseDN                           = ou=people,dc=example,dc=org | ||||||
|  | #idp.authn.LDAP.subtreeSearch                   = false | ||||||
|  | idp.authn.LDAP.userFilter                       = (uid={user}) | ||||||
|  | # bind search configuration | ||||||
|  | # for AD: idp.authn.LDAP.bindDN=adminuser@domain.com | ||||||
|  | idp.authn.LDAP.bindDN                           = uid=myservice,ou=system | ||||||
|  |  | ||||||
|  | # Format DN resolution, used by directAuthenticator, adAuthenticator | ||||||
|  | # for AD use idp.authn.LDAP.dnFormat=%s@domain.com | ||||||
|  | idp.authn.LDAP.dnFormat                         = uid=%s,ou=people,dc=example,dc=org | ||||||
|  |  | ||||||
|  | # pool passivator, either none, bind or anonymousBind | ||||||
|  | #idp.authn.LDAP.bindPoolPassivator                  = none | ||||||
|  |  | ||||||
|  | # LDAP attribute configuration, see attribute-resolver.xml | ||||||
|  | # Note, this likely won't apply to the use of legacy V2 resolver configurations | ||||||
|  | idp.attribute.resolver.LDAP.ldapURL             = %{idp.authn.LDAP.ldapURL} | ||||||
|  | idp.attribute.resolver.LDAP.connectTimeout      = %{idp.authn.LDAP.connectTimeout:PT3S} | ||||||
|  | idp.attribute.resolver.LDAP.responseTimeout     = %{idp.authn.LDAP.responseTimeout:PT3S} | ||||||
|  | idp.attribute.resolver.LDAP.connectionStrategy  = %{idp.authn.LDAP.connectionStrategy:ACTIVE_PASSIVE} | ||||||
|  | idp.attribute.resolver.LDAP.baseDN              = %{idp.authn.LDAP.baseDN:undefined} | ||||||
|  | idp.attribute.resolver.LDAP.bindDN              = %{idp.authn.LDAP.bindDN:undefined} | ||||||
|  | idp.attribute.resolver.LDAP.useStartTLS         = %{idp.authn.LDAP.useStartTLS:true} | ||||||
|  | idp.attribute.resolver.LDAP.trustCertificates   = %{idp.authn.LDAP.trustCertificates:undefined} | ||||||
|  | idp.attribute.resolver.LDAP.searchFilter        = (uid=$resolutionContext.principal) | ||||||
|  |  | ||||||
|  | # LDAP pool configuration, used for both authn and DN resolution | ||||||
|  | #idp.pool.LDAP.minSize                          = 3 | ||||||
|  | #idp.pool.LDAP.maxSize                          = 10 | ||||||
|  | #idp.pool.LDAP.validateOnCheckout               = false | ||||||
|  | #idp.pool.LDAP.validatePeriodically             = true | ||||||
|  | #idp.pool.LDAP.validatePeriod                   = PT5M | ||||||
|  | #idp.pool.LDAP.validateDN                       = | ||||||
|  | #idp.pool.LDAP.validateFilter                   = (objectClass=*) | ||||||
|  | #idp.pool.LDAP.prunePeriod                      = PT5M | ||||||
|  | #idp.pool.LDAP.idleTime                         = PT10M | ||||||
|  | #idp.pool.LDAP.blockWaitTime                    = PT3S | ||||||
							
								
								
									
										192
									
								
								conf/logback.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								conf/logback.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <configuration> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Variables for simplifying logging configuration. | ||||||
|  |     http://logback.qos.ch/manual/configuration.html#variableSubstitution | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     If you want to use custom properties in this config file, | ||||||
|  |     we load the main property file for you. | ||||||
|  |     --> | ||||||
|  |     <variable file="${idp.home}/conf/idp.properties" /> | ||||||
|  |  | ||||||
|  |     <!-- Location and retention. --> | ||||||
|  |      | ||||||
|  |     <variable name="idp.logfiles" value="${idp.logfiles:-${idp.home}/logs}" /> | ||||||
|  |     <variable name="idp.loghistory" value="${idp.loghistory:-180}" /> | ||||||
|  |      | ||||||
|  |     <!-- Much higher performance if you operate on DEBUG. --> | ||||||
|  |     <!-- <variable name="idp.process.appender" value="ASYNC_PROCESS" /> --> | ||||||
|  |      | ||||||
|  |     <!-- Logging level shortcuts. --> | ||||||
|  |     <variable name="idp.loglevel.idp" value="${idp.loglevel.idp:-INFO}" /> | ||||||
|  |     <variable name="idp.loglevel.ldap" value="${idp.loglevel.ldap:-WARN}" /> | ||||||
|  |     <variable name="idp.loglevel.messages" value="${idp.loglevel.messages:-INFO}" /> | ||||||
|  |     <variable name="idp.loglevel.encryption" value="${idp.loglevel.encryption:-INFO}" /> | ||||||
|  |     <variable name="idp.loglevel.opensaml" value="${idp.loglevel.opensaml:-INFO}" /> | ||||||
|  |     <variable name="idp.loglevel.props" value="${idp.loglevel.props:-INFO}" /> | ||||||
|  |     <variable name="idp.loglevel.httpclient" value="${idp.loglevel.httpclient:-INFO}" /> | ||||||
|  |      | ||||||
|  |     <!-- Don't turn these up unless you want a *lot* of noise. --> | ||||||
|  |     <variable name="idp.loglevel.spring" value="${idp.loglevel.spring:-ERROR}" /> | ||||||
|  |     <variable name="idp.loglevel.container" value="${idp.loglevel.container:-ERROR}" /> | ||||||
|  |     <variable name="idp.loglevel.xmlsec" value="${idp.loglevel.xmlsec:-INFO}" /> | ||||||
|  |  | ||||||
|  |     <!-- =========================================================== --> | ||||||
|  |     <!-- ============== Logging Categories and Levels ============== --> | ||||||
|  |     <!-- =========================================================== --> | ||||||
|  |  | ||||||
|  |     <!-- Logs IdP, but not OpenSAML, messages --> | ||||||
|  |     <logger name="net.shibboleth.idp" level="${idp.loglevel.idp}"/> | ||||||
|  |  | ||||||
|  |     <!-- Logs OpenSAML, but not IdP, messages --> | ||||||
|  |     <logger name="org.opensaml.saml" level="${idp.loglevel.opensaml}"/> | ||||||
|  |      | ||||||
|  |     <!-- Logs LDAP related messages --> | ||||||
|  |     <logger name="org.ldaptive" level="${idp.loglevel.ldap}"/> | ||||||
|  |  | ||||||
|  |     <!-- Logs embedded HTTP client messages --> | ||||||
|  |     <logger name="org.apache.http" level="${idp.loglevel.httpclient}"/> | ||||||
|  |      | ||||||
|  |     <!-- Logs inbound and outbound protocols messages at DEBUG level --> | ||||||
|  |     <logger name="PROTOCOL_MESSAGE" level="${idp.loglevel.messages}" /> | ||||||
|  |  | ||||||
|  |     <!-- Logs unencrypted SAML at DEBUG level --> | ||||||
|  |     <logger name="org.opensaml.saml.saml2.encryption.Encrypter" level="${idp.loglevel.encryption}" /> | ||||||
|  |     <logger name="org.opensaml.saml.saml2.encryption.Decrypter" level="${idp.loglevel.encryption}" /> | ||||||
|  |  | ||||||
|  |     <!-- Logs system properties during startup at DEBUG level --> | ||||||
|  |     <logger name="net.shibboleth.idp.log.LogbackLoggingService" level="${idp.loglevel.props}" /> | ||||||
|  |  | ||||||
|  |     <!-- Especially chatty. --> | ||||||
|  |     <logger name="org.apache.xml.security" level="${idp.loglevel.xmlsec}" /> | ||||||
|  |     <logger name="org.springframework" level="${idp.loglevel.spring}"/> | ||||||
|  |     <logger name="org.apache.catalina" level="${idp.loglevel.container}"/> | ||||||
|  |     <logger name="org.eclipse.jetty" level="${idp.loglevel.container}"/> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- =========================================================== --> | ||||||
|  |     <!-- ============== Low Level Details or Changes =============== --> | ||||||
|  |     <!-- =========================================================== --> | ||||||
|  |      | ||||||
|  |     <!-- Process log. --> | ||||||
|  |     <appender name="IDP_PROCESS" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <File>${idp.logfiles}/idp-process.log</File> | ||||||
|  |          | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||||||
|  |             <fileNamePattern>${idp.logfiles}/idp-process-%d{yyyy-MM-dd}.log.gz</fileNamePattern> | ||||||
|  |             <maxHistory>${idp.loghistory}</maxHistory> | ||||||
|  |         </rollingPolicy> | ||||||
|  |  | ||||||
|  |         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |             <Pattern>%date{ISO8601} - %mdc{idp.remote_addr} - %level [%logger:%line] - %msg%n%ex{short}</Pattern> | ||||||
|  |         </encoder> | ||||||
|  |  | ||||||
|  |         <!-- Ignore Velocity status page error. --> | ||||||
|  |         <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> | ||||||
|  |             <evaluator> | ||||||
|  |                 <matcher> | ||||||
|  |                     <Name>VelocityStatusMatcher</Name> | ||||||
|  |                     <regex>ResourceManager\s*: unable to find resource 'status\.vm' in any resource loader\.</regex> | ||||||
|  |                 </matcher> | ||||||
|  |                 <expression>VelocityStatusMatcher.matches(formattedMessage)</expression> | ||||||
|  |             </evaluator> | ||||||
|  |             <OnMatch>DENY</OnMatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <appender name="ASYNC_PROCESS" class="ch.qos.logback.classic.AsyncAppender"> | ||||||
|  |         <appender-ref ref="IDP_PROCESS" /> | ||||||
|  |         <discardingThreshold>0</discardingThreshold> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <appender name="IDP_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- Suppress anything below WARN. --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | ||||||
|  |             <level>WARN</level> | ||||||
|  |         </filter> | ||||||
|  |          | ||||||
|  |         <File>${idp.logfiles}/idp-warn.log</File> | ||||||
|  |          | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||||||
|  |             <fileNamePattern>${idp.logfiles}/idp-warn-%d{yyyy-MM-dd}.log.gz</fileNamePattern> | ||||||
|  |             <maxHistory>${idp.loghistory}</maxHistory> | ||||||
|  |         </rollingPolicy> | ||||||
|  |          | ||||||
|  |         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |             <Pattern>%date{ISO8601} - %mdc{idp.remote_addr} - %level [%logger:%line] - %msg%n%ex{full}</Pattern> | ||||||
|  |         </encoder> | ||||||
|  |          | ||||||
|  |         <!-- Ignore Velocity status page error. --> | ||||||
|  |         <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> | ||||||
|  |             <evaluator> | ||||||
|  |                 <matcher> | ||||||
|  |                     <Name>VelocityStatusMatcher</Name> | ||||||
|  |                     <regex>ResourceManager\s*: unable to find resource 'status\.vm' in any resource loader\.</regex> | ||||||
|  |                 </matcher> | ||||||
|  |                 <expression>VelocityStatusMatcher.matches(formattedMessage)</expression> | ||||||
|  |             </evaluator> | ||||||
|  |             <OnMatch>DENY</OnMatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |      | ||||||
|  |     <!-- Audit log. --> | ||||||
|  |     <appender name="IDP_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <File>${idp.logfiles}/idp-audit.log</File> | ||||||
|  |  | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||||||
|  |             <fileNamePattern>${idp.logfiles}/idp-audit-%d{yyyy-MM-dd}.log.gz</fileNamePattern> | ||||||
|  |             <maxHistory>${idp.loghistory}</maxHistory> | ||||||
|  |         </rollingPolicy> | ||||||
|  |  | ||||||
|  |         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |             <Pattern>%msg%n</Pattern> | ||||||
|  |         </encoder> | ||||||
|  |     </appender> | ||||||
|  |      | ||||||
|  |     <!-- Consent audit log. --> | ||||||
|  |     <appender name="IDP_CONSENT_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <File>${idp.logfiles}/idp-consent-audit.log</File> | ||||||
|  |  | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||||||
|  |             <fileNamePattern>${idp.logfiles}/idp-consent-audit-%d{yyyy-MM-dd}.log.gz</fileNamePattern> | ||||||
|  |             <maxHistory>${idp.loghistory}</maxHistory> | ||||||
|  |         </rollingPolicy> | ||||||
|  |  | ||||||
|  |         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |             <Pattern>%msg%n</Pattern> | ||||||
|  |         </encoder> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <!-- F-TICKS syslog destination. --> | ||||||
|  |     <appender name="IDP_FTICKS" class="ch.qos.logback.classic.net.SyslogAppender"> | ||||||
|  |         <syslogHost>${idp.fticks.loghost:-localhost}</syslogHost> | ||||||
|  |         <port>${idp.fticks.logport:-514}</port> | ||||||
|  |         <facility>AUTH</facility> | ||||||
|  |         <suffixPattern>[%thread] %logger %msg</suffixPattern> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <logger name="Shibboleth-Audit" level="ALL"> | ||||||
|  |         <appender-ref ref="${idp.audit.appender:-IDP_AUDIT}"/> | ||||||
|  |     </logger> | ||||||
|  |  | ||||||
|  |     <logger name="Shibboleth-FTICKS" level="ALL" additivity="false"> | ||||||
|  |         <appender-ref ref="${idp.fticks.appender:-IDP_FTICKS}"/> | ||||||
|  |     </logger> | ||||||
|  |  | ||||||
|  |     <logger name="Shibboleth-Consent-Audit" level="ALL"> | ||||||
|  |         <appender-ref ref="${idp.consent.appender:-IDP_CONSENT_AUDIT}"/> | ||||||
|  |     </logger> | ||||||
|  |      | ||||||
|  |     <root level="${idp.loglevel.root:-INFO}"> | ||||||
|  |         <appender-ref ref="${idp.process.appender:-IDP_PROCESS}"/> | ||||||
|  |         <appender-ref ref="${idp.warn.appender:-IDP_WARN}" /> | ||||||
|  |     </root> | ||||||
|  |  | ||||||
|  | </configuration> | ||||||
							
								
								
									
										89
									
								
								conf/metadata-providers.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								conf/metadata-providers.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider" | ||||||
|  |     xmlns="urn:mace:shibboleth:2.0:metadata" | ||||||
|  |     xmlns:security="urn:mace:shibboleth:2.0:security" | ||||||
|  |     xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" | ||||||
|  |     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" | ||||||
|  |     xmlns:alg="urn:oasis:names:tc:SAML:metadata:algsupport" | ||||||
|  |     xmlns:ds="http://www.w3.org/2000/09/xmldsig#" | ||||||
|  |     xmlns:ds11="http://www.w3.org/2009/xmldsig11#" | ||||||
|  |     xmlns:enc="http://www.w3.org/2001/04/xmlenc#" | ||||||
|  |     xmlns:enc11="http://www.w3.org/2009/xmlenc11#" | ||||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd | ||||||
|  |                         urn:mace:shibboleth:2.0:security http://shibboleth.net/schema/idp/shibboleth-security.xsd | ||||||
|  |                         urn:oasis:names:tc:SAML:2.0:assertion http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd | ||||||
|  |                         urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd | ||||||
|  |                         urn:oasis:names:tc:SAML:metadata:algsupport http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-algsupport-v1.0.xsd | ||||||
|  |                         http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd | ||||||
|  |                         http://www.w3.org/2009/xmldsig11# http://www.w3.org/TR/2013/REC-xmldsig-core1-20130411/xmldsig11-schema.xsd | ||||||
|  |                         http://www.w3.org/2001/04/xmlenc# http://www.w3.org/TR/xmlenc-core/xenc-schema.xsd | ||||||
|  |                         http://www.w3.org/2009/xmlenc11# http://www.w3.org/TR/2013/REC-xmlenc-core1-20130411/xenc-schema-11.xsd" | ||||||
|  |     sortKey="1"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Below you place the mechanisms which define how to load the metadata for SP(s) you will | ||||||
|  |     provide service to. | ||||||
|  |      | ||||||
|  |     Some simple examples are provided. The documentation provides more details; in most cases, | ||||||
|  |     the modern replacement for these older plugins are the "DynamicHTTPMetadataProvider" and | ||||||
|  |     "LocalDynamic" variants, which provide dramatic memory savings and more reliable operation. | ||||||
|  |       | ||||||
|  |     NOTE: You do NOT need to load metadata for this IdP itself within this configuration. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     Example HTTP metadata provider.  Use this if you want to download the metadata | ||||||
|  |     from a remote source. | ||||||
|  |  | ||||||
|  |     You *MUST* provide the SignatureValidationFilter in order to function securely. | ||||||
|  |     Get the public key certificate from the party publishing the metadata, and validate | ||||||
|  |     it with them via some out of band mechanism (e.g., a fingerprint on a secure page). | ||||||
|  |  | ||||||
|  |     The EntityRole filter saves memory by only loading metadata from SAML roles | ||||||
|  |     that the IdP needs to interoperate with. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     <MetadataProvider id="HTTPMetadata" | ||||||
|  |                       xsi:type="FileBackedHTTPMetadataProvider" | ||||||
|  |                       backingFile="%{idp.home}/metadata/localCopyFromXYZHTTP.xml" | ||||||
|  |                       metadataURL="http://WHATEVER" | ||||||
|  |                       failFastInitialization="false"> | ||||||
|  |          | ||||||
|  |         <MetadataFilter xsi:type="SignatureValidation" certificateFile="%{idp.home}/credentials/metaroot.pem" /> | ||||||
|  |         <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P30D"/> | ||||||
|  |         <MetadataFilter xsi:type="EntityRole"> | ||||||
|  |             <RetainedRole>md:SPSSODescriptor</RetainedRole> | ||||||
|  |         </MetadataFilter> | ||||||
|  |     </MetadataProvider> | ||||||
|  |     -->    | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Example file metadata provider.  Use this if you want to load metadata | ||||||
|  |     from a local file. You use this if you have some local SPs which are not | ||||||
|  |     "federated" but you wish to offer a service to. | ||||||
|  |      | ||||||
|  |     If you do not provide a SignatureValidation filter, then you have the | ||||||
|  |     responsibility to ensure that the contents on disk are trustworthy. | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- | ||||||
|  |     <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Example CAS metadata source for managing CAS services using SAML metadata. | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     <MetadataProvider id="CASMetadata" | ||||||
|  |                       xsi:type="FilesystemMetadataProvider" | ||||||
|  |                       metadataFile="PATH_TO_YOUR_METADATA" | ||||||
|  |                       indexesRef="shibboleth.CASMetadataIndices" /> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  | </MetadataProvider> | ||||||
							
								
								
									
										72
									
								
								conf/relying-party.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								conf/relying-party.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     Unverified RP configuration, defaults to no support for any profiles. Add <ref> elements to the list | ||||||
|  |     to enable specific default profile settings (as below), or create new beans inline to override defaults. | ||||||
|  |      | ||||||
|  |     "Unverified" typically means the IdP has no metadata, or equivalent way of assuring the identity and | ||||||
|  |     legitimacy of a requesting system. To run an "open" IdP, you can enable profiles here. | ||||||
|  |     --> | ||||||
|  |     <bean id="shibboleth.UnverifiedRelyingParty" parent="RelyingParty"> | ||||||
|  |         <property name="profileConfigurations"> | ||||||
|  |             <list> | ||||||
|  |             <!-- <bean parent="SAML2.SSO" p:encryptAssertions="false" /> --> | ||||||
|  |             </list> | ||||||
|  |         </property> | ||||||
|  |     </bean> | ||||||
|  |  | ||||||
|  |     <!-- Default configuration, with default settings applied for all profiles. --> | ||||||
|  |     <bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"> | ||||||
|  |         <property name="profileConfigurations"> | ||||||
|  |             <list> | ||||||
|  |                 <!-- SAML 1.1 and SAML 2.0 AttributeQuery are disabled by default. --> | ||||||
|  |                 <!-- | ||||||
|  |                 <bean parent="Shibboleth.SSO" /> | ||||||
|  |                 <ref bean="SAML1.AttributeQuery" /> | ||||||
|  |                 <ref bean="SAML1.ArtifactResolution" /> | ||||||
|  |                 --> | ||||||
|  |                 <bean parent="SAML2.SSO" /> | ||||||
|  |                 <ref bean="SAML2.ECP" /> | ||||||
|  |                 <ref bean="SAML2.Logout" /> | ||||||
|  |                 <!-- | ||||||
|  |                 <ref bean="SAML2.AttributeQuery" /> | ||||||
|  |                 --> | ||||||
|  |                 <ref bean="SAML2.ArtifactResolution" /> | ||||||
|  |                 <ref bean="Liberty.SSOS" /> | ||||||
|  |             </list> | ||||||
|  |         </property> | ||||||
|  |     </bean> | ||||||
|  |  | ||||||
|  |     <!-- Container for any overrides you want to add. --> | ||||||
|  |  | ||||||
|  |     <util:list id="shibboleth.RelyingPartyOverrides"> | ||||||
|  |      | ||||||
|  |         <!-- | ||||||
|  |         Override example that identifies a single RP by name and configures it | ||||||
|  |         for SAML 2 SSO without encryption. This is a common "vendor" scenario. | ||||||
|  |         --> | ||||||
|  |         <!-- | ||||||
|  |         <bean id="ExampleSP" parent="RelyingPartyByName" c:relyingPartyIds="https://sp.example.org"> | ||||||
|  |             <property name="profileConfigurations"> | ||||||
|  |                 <list> | ||||||
|  |                     <bean parent="SAML2.SSO" p:encryptAssertions="false" /> | ||||||
|  |                 </list> | ||||||
|  |             </property> | ||||||
|  |         </bean> | ||||||
|  |         --> | ||||||
|  |          | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
							
								
								
									
										31
									
								
								conf/saml-nameid.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								conf/saml-nameid.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | # Properties involving SAML NameIdentifier/NameID generation/consumption | ||||||
|  |  | ||||||
|  | # For the most part these settings only deal with "transient" and "persistent" | ||||||
|  | # identifiers. See saml-nameid.xml and c14n/subject-c14n.xml for advanced | ||||||
|  | # settings | ||||||
|  |  | ||||||
|  | # Default NameID Formats to use when nothing else is called for. | ||||||
|  | # Don't change these just to change the Format used for a single SP! | ||||||
|  | #idp.nameid.saml2.default = urn:oasis:names:tc:SAML:2.0:nameid-format:transient | ||||||
|  | #idp.nameid.saml1.default = urn:mace:shibboleth:1.0:nameIdentifier | ||||||
|  |  | ||||||
|  | # Set to shibboleth.StoredTransientIdGenerator for server-side transient ID storage | ||||||
|  | #idp.transientId.generator = shibboleth.CryptoTransientIdGenerator | ||||||
|  |  | ||||||
|  | # Persistent IDs can be computed on the fly with a hash, or managed in a database | ||||||
|  |  | ||||||
|  | # For computed IDs, set a source attribute, and a secret salt in secrets.properties | ||||||
|  | #idp.persistentId.sourceAttribute = changethistosomethingreal | ||||||
|  | #idp.persistentId.useUnfilteredAttributes = true | ||||||
|  | #idp.persistentId.algorithm = SHA | ||||||
|  | # BASE64 will match V2 values, we recommend BASE32 encoding for new installs. | ||||||
|  | idp.persistentId.encoding = BASE32 | ||||||
|  |  | ||||||
|  | # To use a database, use shibboleth.StoredPersistentIdGenerator | ||||||
|  | #idp.persistentId.generator = shibboleth.ComputedPersistentIdGenerator | ||||||
|  | # For basic use, set this to a JDBC DataSource bean name: | ||||||
|  | #idp.persistentId.dataSource = PersistentIdDataSource | ||||||
|  | # Controls which JDBC error codes are treated as retryable | ||||||
|  | #idp.persistentId.retryableErrors = 23000,23505 | ||||||
|  | # Set to an empty property to skip hash-based generation of first stored ID | ||||||
|  | #idp.persistentId.computed = shibboleth.ComputedPersistentIdGenerator | ||||||
							
								
								
									
										64
									
								
								conf/saml-nameid.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								conf/saml-nameid.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |        xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |        xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |        xmlns:c="http://www.springframework.org/schema/c" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |        default-init-method="initialize" | ||||||
|  |        default-destroy-method="destroy"> | ||||||
|  |  | ||||||
|  |     <!-- ========================= SAML NameID Generation ========================= --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     These generator lists handle NameID/Nameidentifier generation going forward. By default, | ||||||
|  |     transient IDs for both SAML versions are enabled. The commented examples are for persistent IDs | ||||||
|  |     and generating more one-off formats based on resolved attributes. The suggested approach is to | ||||||
|  |     control their use via release of the underlying source attribute in the filter policy rather | ||||||
|  |     than here, but you can set a property on any generator called "activationCondition" to limit | ||||||
|  |     use in the most generic way. | ||||||
|  |      | ||||||
|  |     Most of the relevant configuration settings are controlled using properties; an exception is | ||||||
|  |     the generation of arbitrary/custom formats based on attribute information, examples of which | ||||||
|  |     are shown below. | ||||||
|  |      | ||||||
|  |     --> | ||||||
|  |      | ||||||
|  |     <!-- SAML 2 NameID Generation --> | ||||||
|  |     <util:list id="shibboleth.SAML2NameIDGenerators"> | ||||||
|  |      | ||||||
|  |         <ref bean="shibboleth.SAML2TransientGenerator" /> | ||||||
|  |          | ||||||
|  |         <!-- Uncommenting this bean requires configuration in saml-nameid.properties. --> | ||||||
|  |         <!-- | ||||||
|  |         <ref bean="shibboleth.SAML2PersistentGenerator" /> | ||||||
|  |         --> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         <bean parent="shibboleth.SAML2AttributeSourcedGenerator" | ||||||
|  |             p:omitQualifiers="true" | ||||||
|  |             p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" | ||||||
|  |             p:attributeSourceIds="#{ {'mail'} }" /> | ||||||
|  |         --> | ||||||
|  |                  | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- SAML 1 NameIdentifier Generation --> | ||||||
|  |     <util:list id="shibboleth.SAML1NameIdentifierGenerators"> | ||||||
|  |  | ||||||
|  |         <ref bean="shibboleth.SAML1TransientGenerator" /> | ||||||
|  |  | ||||||
|  |         <!-- | ||||||
|  |         <bean parent="shibboleth.SAML1AttributeSourcedGenerator" | ||||||
|  |             p:omitQualifiers="true" | ||||||
|  |             p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" | ||||||
|  |             p:attributeSourceIds="#{ {'mail'} }" /> | ||||||
|  |         --> | ||||||
|  |                  | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										83
									
								
								conf/services.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								conf/services.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | |||||||
|  | # Configure the resources to load for various services, | ||||||
|  | # and the settings for failure handling and auto-reload. | ||||||
|  |  | ||||||
|  | # failFast=true prevents IdP startup if a configuration is bad | ||||||
|  | # checkInterval = PT0S means never reload (this is the default) | ||||||
|  |  | ||||||
|  | # Global default for fail-fast behavior of most subsystems | ||||||
|  | # with individual override possible below. | ||||||
|  | #idp.service.failFast = false | ||||||
|  |  | ||||||
|  | #idp.service.logging.resource = %{idp.home}/conf/logback.xml | ||||||
|  | #idp.service.logging.failFast = true | ||||||
|  | idp.service.logging.checkInterval = PT5M | ||||||
|  |  | ||||||
|  | #idp.service.relyingparty.resources = shibboleth.RelyingPartyResolverResources | ||||||
|  | #idp.service.relyingparty.failFast = false | ||||||
|  | idp.service.relyingparty.checkInterval = PT15M | ||||||
|  | # See MetadataDrivenConfiguration wiki topic for details | ||||||
|  | idp.service.relyingparty.ignoreUnmappedEntityAttributes=true | ||||||
|  |  | ||||||
|  | #idp.service.metadata.resources = shibboleth.MetadataResolverResources | ||||||
|  | #idp.service.metadata.failFast = false | ||||||
|  | #idp.service.metadata.checkInterval = PT0S | ||||||
|  | # Set to false if not using ByReference MetadataFilters for a small perf gain | ||||||
|  | #idp.service.metadata.enableByReferenceFilters = true | ||||||
|  |  | ||||||
|  | #idp.service.attribute.registry.resources = shibboleth.AttributeRegistryResources | ||||||
|  | #idp.service.attribute.registry.failFast = false | ||||||
|  | idp.service.attribute.registry.checkInterval = PT15M | ||||||
|  | # Default control of whether to encode XML attribute data with xsi:type | ||||||
|  | idp.service.attribute.registry.encodeType = false | ||||||
|  |  | ||||||
|  | #idp.service.attribute.resolver.resources = shibboleth.AttributeResolverResources | ||||||
|  | #idp.service.attribute.resolver.failFast = false | ||||||
|  | idp.service.attribute.resolver.checkInterval = PT15M | ||||||
|  | #idp.service.attribute.resolver.maskFailures = true | ||||||
|  | #idp.service.attribute.resolver.stripNulls = false | ||||||
|  | #idp.service.attribute.resolver.suppressDisplayInfo = true | ||||||
|  |  | ||||||
|  | #idp.service.attribute.filter.resources = shibboleth.AttributeFilterResources | ||||||
|  | # NOTE: Failing the filter fast leaves no filters enabled. | ||||||
|  | #idp.service.attribute.filter.failFast = false | ||||||
|  | idp.service.attribute.filter.checkInterval = PT15M | ||||||
|  | #idp.service.attribute.filter.maskFailures = true | ||||||
|  |  | ||||||
|  | #idp.service.nameidGeneration.resources = shibboleth.NameIdentifierGenerationResources | ||||||
|  | #idp.service.nameidGeneration.failFast = false | ||||||
|  | idp.service.nameidGeneration.checkInterval = PT15M | ||||||
|  |  | ||||||
|  | #idp.service.access.resources = shibboleth.AccessControlResources | ||||||
|  | #idp.service.access.failFast = true | ||||||
|  | idp.service.access.checkInterval = PT5M | ||||||
|  |  | ||||||
|  | #idp.service.cas.registry.resources = shibboleth.CASServiceRegistryResources | ||||||
|  | #idp.service.cas.registry.failFast = false | ||||||
|  | idp.service.cas.registry.checkInterval = PT15M | ||||||
|  |  | ||||||
|  | #idp.service.managedBean.resources = shibboleth.ManagedBeanResources | ||||||
|  | #idp.service.managedBean.failFast = false | ||||||
|  | idp.service.managedBean.checkInterval = PT15M | ||||||
|  |  | ||||||
|  | #idp.message.resources = shibboleth.MessageSourceResources | ||||||
|  | #idp.message.cacheSeconds = 300 | ||||||
|  |  | ||||||
|  | # These settings impact the behavior of the internal HTTP Client used by default | ||||||
|  | # with some internal components, but notably *not* for metadata acquisition. | ||||||
|  | #idp.httpclient.useSecurityEnhancedTLSSocketFactory = false | ||||||
|  | #idp.httpclient.connectionDisregardTLSCertificate = false | ||||||
|  | #idp.httpclient.connectionRequestTimeout = PT1M | ||||||
|  | #idp.httpclient.connectionTimeout = PT1M | ||||||
|  | #idp.httpclient.socketTimeout = PT1M | ||||||
|  | #idp.httpclient.maxConnectionsTotal = 100 | ||||||
|  | #idp.httpclient.maxConnectionsPerRoute = 100 | ||||||
|  |  | ||||||
|  | # These are deprecated properties that configure the old caching HttpClient | ||||||
|  | # beans that are no longer supported. If you want to manually configure | ||||||
|  | # the caching clients, you should define the beans yourself and if desired | ||||||
|  | # rely on properties of your own devising. | ||||||
|  | #idp.httpclient.memorycaching.maxCacheEntries = 50 | ||||||
|  | #idp.httpclient.memorycaching.maxCacheEntrySize = 1048576 | ||||||
|  | #idp.httpclient.filecaching.maxCacheEntries = 100 | ||||||
|  | #idp.httpclient.filecaching.maxCacheEntrySize = 10485760 | ||||||
|  | idp.httpclient.filecaching.cacheDirectory = %{idp.home}/tmp/httpClientCache | ||||||
							
								
								
									
										58
									
								
								conf/services.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								conf/services.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |     xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |     xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" | ||||||
|  |     xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||||
|  |                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd | ||||||
|  |                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" | ||||||
|  |                             | ||||||
|  |     default-init-method="initialize" | ||||||
|  |     default-destroy-method="destroy"> | ||||||
|  |                                 | ||||||
|  |     <!-- By default we look at resources whose names are derived from %{idp.home}. --> | ||||||
|  |  | ||||||
|  |     <util:list id="shibboleth.RelyingPartyResolverResources"> | ||||||
|  |         <value>%{idp.home}/conf/relying-party.xml</value> | ||||||
|  |         <value>%{idp.home}/conf/credentials.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <util:list id="shibboleth.MetadataResolverResources"> | ||||||
|  |         <value>%{idp.home}/conf/metadata-providers.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <util:list id ="shibboleth.AttributeResolverResources"> | ||||||
|  |         <value>%{idp.home}/conf/attribute-resolver.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     This is suitable for new installs but will usually produce duplicate Attribute | ||||||
|  |     output if a legacy resolver file is used that contains AttributeEncoders. | ||||||
|  |     --> | ||||||
|  |     <util:list id ="shibboleth.AttributeRegistryResources"> | ||||||
|  |         <value>%{idp.home}/conf/attribute-registry.xml</value> | ||||||
|  |         <value>%{idp.home}/conf/attributes/default-rules.xml</value> | ||||||
|  |         <value>%{idp.home}/conf/attribute-resolver.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <util:list id ="shibboleth.AttributeFilterResources"> | ||||||
|  |         <value>%{idp.home}/conf/attribute-filter.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <util:list id ="shibboleth.NameIdentifierGenerationResources"> | ||||||
|  |         <value>%{idp.home}/conf/saml-nameid.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  |     <util:list id="shibboleth.AccessControlResources"> | ||||||
|  |         <value>%{idp.home}/conf/access-control.xml</value> | ||||||
|  |     </util:list> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |     This collection of resources differs slightly in that it should not include the file extension. | ||||||
|  |     Message sources are internationalized, and Spring will search for a compatible language extension | ||||||
|  |     and fall back to one with only a .properties extension. | ||||||
|  |     --> | ||||||
|  |     <util:list id="shibboleth.MessageSourceResources"> | ||||||
|  |         <value>%{idp.home}/messages/messages</value> | ||||||
|  |     </util:list> | ||||||
|  |      | ||||||
|  | </beans> | ||||||
							
								
								
									
										6
									
								
								messages/messages.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								messages/messages.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | # You can define message properties here to override messages defined in | ||||||
|  | # the system-supplied message file or to add your own messages. | ||||||
|  |  | ||||||
|  | # You should alter these to point to different files of your own choosing. | ||||||
|  | #idp.css = /css/placeholder.css | ||||||
|  | #idp.logo = /images/placeholder-logo.png | ||||||
							
								
								
									
										251
									
								
								metadata/idp-metadata.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										251
									
								
								metadata/idp-metadata.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,251 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- | ||||||
|  |      This is example metadata only. Do *NOT* supply it as is without review, | ||||||
|  |      and do *NOT* provide it in real time to your partners. | ||||||
|  |  | ||||||
|  |      This metadata is not dynamic - it will not change as your configuration changes.     On Demand Metadata Generation available from the metadatagen plugin. | ||||||
|  | -->  | ||||||
|  | <EntityDescriptor  xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui" xmlns:req-attr="urn:oasis:names:tc:SAML:protocol:ext:req-attr" validUntil="2022-08-05T13:32:20.637Z" entityID="https://idp-cluster.mafoo.org.uk/idp/storedid"> | ||||||
|  |  | ||||||
|  |     <IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> | ||||||
|  |  | ||||||
|  |         <Extensions> | ||||||
|  |             <shibmd:Scope regexp="false">dev.mafoo.org.uk</shibmd:Scope> | ||||||
|  | <!-- | ||||||
|  |     Fill in the details for your IdP here  | ||||||
|  |  | ||||||
|  |             <mdui:UIInfo> | ||||||
|  |                 <mdui:DisplayName xml:lang="en">A Name for the IdP at idp-cluster.mafoo.org.uk</mdui:DisplayName> | ||||||
|  |                 <mdui:Description xml:lang="en">Enter a description of your IdP at idp-cluster.mafoo.org.uk</mdui:Description> | ||||||
|  |                 <mdui:Logo height="80" width="80">https://idp-cluster.mafoo.org.uk/Path/To/Logo.png</mdui:Logo> | ||||||
|  |             </mdui:UIInfo> | ||||||
|  | -->  | ||||||
|  |         </Extensions> | ||||||
|  |  | ||||||
|  |         <!-- First signing certificate is BackChannel, the Second is FrontChannel-->  | ||||||
|  |         <KeyDescriptor use="signing"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIETDCCArSgAwIBAgIVAKG5mmaoA2ZYQJULhNoiNa1ovyl+MA0GCSqGSIb3DQEB | ||||||
|  | CwUAMCMxITAfBgNVBAMMGGlkcC1jbHVzdGVyLm1hZm9vLm9yZy51azAeFw0yMjA4 | ||||||
|  | MDUxMzMyMDJaFw00MjA4MDUxMzMyMDJaMCMxITAfBgNVBAMMGGlkcC1jbHVzdGVy | ||||||
|  | Lm1hZm9vLm9yZy51azCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALkS | ||||||
|  | pIebis25mpjh2bBDBLhTMdYEDl9qX2zEAeZ2XM9Pb7xMbeuLR6N9vtsjyMiWK+yb | ||||||
|  | cZdpXGG628uxCk3pviIpVD5k4qfBndOS1PgtH4qyOgcmHoZ7rc4QZY1vmBoj21Yn | ||||||
|  | CdSB4f69QnOuc+CZ5h54p8UZlmyPfuLG3Y2tHQZc7jePJLE6NtHfYcp6XQGDGeGx | ||||||
|  | ZUHt8F2R6wVwHSXNve3qjDzAG+Ny8tsYLuM2bHLq00Htpo+c4XHmZ8gMu+oayivc | ||||||
|  | SUCBgxnl0szdKYE5MrzfcEJVIP2SS3Zkgh5L4xcO4e5dlkyGnnhaRzv56cX2ZGSh | ||||||
|  | 8TcnJT8aCh9ip1v/66btHHuRCPXr4dPWTKkXPbrVhbYTPt6xWi/BWPBodpjMygAr | ||||||
|  | Dyr4nAZU3X9DkDYUKBSUXbSXyMjC42KfwViBLlnXSBmmDQ64+zwusvs8TwKq8mbR | ||||||
|  | oinXr/37PHvBgCTT+nLV9YTJ8aG/pKVMOrTCYcb/d/hUbOsaxXjScDJrshK6fQID | ||||||
|  | AQABo3cwdTAdBgNVHQ4EFgQUNOw37BGQLIEy4V0I6OP10clXxCMwVAYDVR0RBE0w | ||||||
|  | S4IYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrhi9odHRwczovL2lkcC1jbHVzdGVy | ||||||
|  | Lm1hZm9vLm9yZy51ay9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOCAYEA | ||||||
|  | EGvcsVd3TXDAb+ii80UNldCMM3VBU/erXXHYqASeEbhQK9/BeDpv0qIjHIcPdBjL | ||||||
|  | NR4KtSuCpNbZyKepu4VGtHozzWhY/FiL2SzOePNeTRqN2dKZOzafmQbIvkIzdtYW | ||||||
|  | gp7eJxUeNL5CaizNF0r4Ojj1KThccV8bwch2gahF9hvUox1jin4nHeHC6Avnn6MW | ||||||
|  | prW9SsPdOSFyx3xJ26AiicfNvMjfPwM1dakq+rJ/y1n+m/ec4D8DDNWy7420uF+e | ||||||
|  | cr43WQqC4B0NjxI/gSxq6VJexI30MSqWfOSumeLqFNaFvqh0E+xXbo4hsw6Zsd9x | ||||||
|  | Lpom30BOqVG5FE74FcmnJybsI7zvhDq1trU2lVYs0d+ypCyDpKBmbhNX/INWmiIX | ||||||
|  | MlUIyDVCYR3CsILS6HHU+qfVERz6Km1lA6HD+qo7irY1GFo8m19JpdtB/K7WdXnC | ||||||
|  | XSySYJU0ZDCIIaNjhtmh1oQeCmy+L9ATtW0r3Y6N0ZEm/wls5piTGYVKougweN95 | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |         <KeyDescriptor use="signing"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIESzCCArOgAwIBAgIUOSgsBql9Vez9kTLTLJy4S1e2dyYwDQYJKoZIhvcNAQEL | ||||||
|  | BQAwIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrMB4XDTIyMDgw | ||||||
|  | NTEzMzE1OFoXDTQyMDgwNTEzMzE1OFowIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAhPzC | ||||||
|  | VZ8lRPrHxfhz1XmGbzgQngV/Ua+6QL6zqC7fFO0bMCFz79c/xgS3YSqEAQa9971u | ||||||
|  | rI+T7YXJ5D5wFtTHMEbtB7B9ZR/pkAvj/FIiaWsVfVjv/c0cWTKKKdLKqQ2sFWzx | ||||||
|  | hnhoaaoXJWguQdm1UQ7rd0JrRllmlKhlUeCB6ecSblAOxsvNeA5+yDXAfj+8j/wp | ||||||
|  | +VMCyA80QUo5HyyBfQXOrAQVWTWWFw2x5+sfDVvfxfOD88dvhQM5cN3+XxBsSysE | ||||||
|  | m3q4PmpbfZdXlXgGdIwyYk3EiB/Qen+iat4i3QwVAHRV1TY8FVehHLTVkN9v/PoB | ||||||
|  | 5637rFEhSKcswpN1b6nuvUHNfJunu7KghVl6xRQsBg6z1/K6GBl5r7vzSvwzalTG | ||||||
|  | DqW/x9pkCfPhD7ZtvdNvplaAF1aG3CU8zsYA5w1uLvWuqGlsWFfm2aLSOIsNotW/ | ||||||
|  | uvB1AO1Chc8vm5N+QKgoC2SQiqttgF04a1h5KGF7b/8rPX8RUkE0YJxeaD8NAgMB | ||||||
|  | AAGjdzB1MB0GA1UdDgQWBBTXom6CZDuB3vgQYqplZphLaD4OfjBUBgNVHREETTBL | ||||||
|  | ghhpZHAtY2x1c3Rlci5tYWZvby5vcmcudWuGL2h0dHBzOi8vaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBgQAs | ||||||
|  | aJGGpMRYfTtCCsEvmAXhrSrrXZq2dHeETX6TgQh21cd810lEwewXtSIWbSqbzB5Y | ||||||
|  | RaQo9mV8TzVk0sa5yYXNz5cIAOxSfDZuN3zYL1T+Db5GIqrUtNbmU/TOabwS0YsW | ||||||
|  | LCxhblJV2XVeqqlMjMdq413EEyKeAvofnWCnROGimrR7DLdd4iI3EXC2N8zOfNj0 | ||||||
|  | kA4hNKktsm/T7nBJMfrqlfLKxrgt+SqhYkJyzSTu5j8lb9tt1dvBvXKfuls9uoa/ | ||||||
|  | nYBGSlPBEi8uyleSQcw/mR6lbvvW1AL6sAy7cDhTZh1jJFgHn39kZ9IIFOC1kbHt | ||||||
|  | rStp19ng60OL8xSS6Mnhzkf09zQdnzkI9ngLcYXqwwyMQCXRANJZ6twGbfwCzfgq | ||||||
|  | UqxR4Lg7sd4JXA8YAeNOgu3HwFw+RsBgEDoI16+1NrnliYQYD6Bvqx71z+CianNq | ||||||
|  | yAPojc2UQSeT7H9GFWbgNnQF6XsRW7xtNPnZmbZ9Og3Wok1nT38hEr+4UqtC8n8= | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |         <KeyDescriptor use="encryption"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIESzCCArOgAwIBAgIUC9wy4S7aa3PVBUkskC6TbAMIE1IwDQYJKoZIhvcNAQEL | ||||||
|  | BQAwIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrMB4XDTIyMDgw | ||||||
|  | NTEzMzE1OVoXDTQyMDgwNTEzMzE1OVowIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtiS6 | ||||||
|  | AFIP3HB2orq7ywGx5flACG1SSLD5FmYtUXJRhSOexFYIqiPBUW9ZTRqWiKyHdHbP | ||||||
|  | AQwQHAczU8NAmA9c4tgoQfhmmpSHRl66U4pAq7c8cwr82ZIkAJUBUtwUfLW1l1rl | ||||||
|  | sNuGojwpE+d0R4kNnYfkSpt+QX+Sh5peGVuT3F267W1wE8eGTELvwemeHbpdtMDp | ||||||
|  | ExyrLjBfbndsk4GHlrnHs9yx912yte/dAHPnFOvz1JOXhA7CIfzak+Tbf3/3tAX+ | ||||||
|  | gDZ7DY+r3VTYTVL32JDvAliYLVKt5CweP46Ad8HassrUhv3gTkIf72uoZt7F8XuI | ||||||
|  | H8YoQheYOG9vFZ89P1SVEwsGvCRJExaYOjv1FbAsWMG6xCSdoAfcrhvrLxtu4tkb | ||||||
|  | uPum8bmMked1actC7wo8R4o2CGmDJ2n5lUZNUgMRix4Tn92l5MYWyFbo4zPW8sfF | ||||||
|  | e3gSFzsLt1OhuJV1Hd6vl35izACaU0pr0GWSyVJpaebkPTWw19Hwpz9FYArBAgMB | ||||||
|  | AAGjdzB1MB0GA1UdDgQWBBR0GeOz/XAhDhLcYJyFEAWes+P6vDBUBgNVHREETTBL | ||||||
|  | ghhpZHAtY2x1c3Rlci5tYWZvby5vcmcudWuGL2h0dHBzOi8vaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBgQAj | ||||||
|  | YoK2BNmXK3KOQwQPY6/3DqoFzEU9F4S8cdDjrbpjHA+UmsmA7PHQC+mE3PJoNY6A | ||||||
|  | LnRJ2RDpnAZLSK1K/enRJdGSyWaD+gshhAUBie6xrFamXe5IG9QiF6O7VKsu+kpM | ||||||
|  | Qtp6iLK/B+Jos8zq0NJrKpCtixepMG1IbAcMcVnqkteiT+a9fmyIMaHcTLY+aEvW | ||||||
|  | 2bfgvszgJ4rcdY5xSDiVcPtcTGuoDsyQW686tImn0sqmOJLB8q+Fo2ULFxPVc8UE | ||||||
|  | HXngmqrZ5c9I5pa8TmL1VybSxSuQ2CUiTsgbpatiL6S8dK8ex3mUCpdMW5vKO0uQ | ||||||
|  | +8JiI8ur72059JpJzbTuKezT+8A124QiUOkfsJdwqHD3+APDVXiFGUGRPFHe4a/g | ||||||
|  | YQnrYa1KOgO83dl6K0GT1pA3+RnZZEBgq7lTYHpxcavTYRy6Dvj8Of8gu7EZo7fJ | ||||||
|  | +Ety/QGKzDDc+h5bLNo2PuDx2wXdbpPQxpYgWdVNgVOdW9vumrWhcxLtNfe9vyQ= | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |  | ||||||
|  |         <!--<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://idp-cluster.mafoo.org.uk:8443/idp/profile/SAML1/SOAP/ArtifactResolution" index="1"/> | ||||||
|  | -->         <ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp-cluster.mafoo.org.uk:8443/idp/profile/SAML2/SOAP/ArtifactResolution" index="2"/> | ||||||
|  |  | ||||||
|  | <!-- | ||||||
|  |         <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp-cluster.mafoo.org.uk:8443/idp/profile/SAML2/SOAP/SLO"/> | ||||||
|  |         <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/POST-SimpleSign/SLO"/> | ||||||
|  |         <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/Redirect/SLO"/> | ||||||
|  |         <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/POST/SLO"/> | ||||||
|  | -->  | ||||||
|  |  | ||||||
|  |         <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" req-attr:supportsRequestedAttributes="true" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/POST-SimpleSign/SSO"/> | ||||||
|  |         <!--<SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://idp-cluster.mafoo.org.uk/idp/profile/Shibboleth/SSO"/> | ||||||
|  | -->         <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" req-attr:supportsRequestedAttributes="true" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/Redirect/SSO"/> | ||||||
|  |         <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" req-attr:supportsRequestedAttributes="true" Location="https://idp-cluster.mafoo.org.uk/idp/profile/SAML2/POST/SSO"/> | ||||||
|  |  | ||||||
|  |     </IDPSSODescriptor> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <!--    <AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol"> | ||||||
|  |  | ||||||
|  |         <Extensions> | ||||||
|  |             <shibmd:Scope regexp="false">dev.mafoo.org.uk</shibmd:Scope> | ||||||
|  |         </Extensions> | ||||||
|  |  | ||||||
|  |         --> <!-- First signing certificate is BackChannel, the Second is FrontChannel-->  <!-- | ||||||
|  |         <KeyDescriptor use="signing"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIETDCCArSgAwIBAgIVAKG5mmaoA2ZYQJULhNoiNa1ovyl+MA0GCSqGSIb3DQEB | ||||||
|  | CwUAMCMxITAfBgNVBAMMGGlkcC1jbHVzdGVyLm1hZm9vLm9yZy51azAeFw0yMjA4 | ||||||
|  | MDUxMzMyMDJaFw00MjA4MDUxMzMyMDJaMCMxITAfBgNVBAMMGGlkcC1jbHVzdGVy | ||||||
|  | Lm1hZm9vLm9yZy51azCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALkS | ||||||
|  | pIebis25mpjh2bBDBLhTMdYEDl9qX2zEAeZ2XM9Pb7xMbeuLR6N9vtsjyMiWK+yb | ||||||
|  | cZdpXGG628uxCk3pviIpVD5k4qfBndOS1PgtH4qyOgcmHoZ7rc4QZY1vmBoj21Yn | ||||||
|  | CdSB4f69QnOuc+CZ5h54p8UZlmyPfuLG3Y2tHQZc7jePJLE6NtHfYcp6XQGDGeGx | ||||||
|  | ZUHt8F2R6wVwHSXNve3qjDzAG+Ny8tsYLuM2bHLq00Htpo+c4XHmZ8gMu+oayivc | ||||||
|  | SUCBgxnl0szdKYE5MrzfcEJVIP2SS3Zkgh5L4xcO4e5dlkyGnnhaRzv56cX2ZGSh | ||||||
|  | 8TcnJT8aCh9ip1v/66btHHuRCPXr4dPWTKkXPbrVhbYTPt6xWi/BWPBodpjMygAr | ||||||
|  | Dyr4nAZU3X9DkDYUKBSUXbSXyMjC42KfwViBLlnXSBmmDQ64+zwusvs8TwKq8mbR | ||||||
|  | oinXr/37PHvBgCTT+nLV9YTJ8aG/pKVMOrTCYcb/d/hUbOsaxXjScDJrshK6fQID | ||||||
|  | AQABo3cwdTAdBgNVHQ4EFgQUNOw37BGQLIEy4V0I6OP10clXxCMwVAYDVR0RBE0w | ||||||
|  | S4IYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrhi9odHRwczovL2lkcC1jbHVzdGVy | ||||||
|  | Lm1hZm9vLm9yZy51ay9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOCAYEA | ||||||
|  | EGvcsVd3TXDAb+ii80UNldCMM3VBU/erXXHYqASeEbhQK9/BeDpv0qIjHIcPdBjL | ||||||
|  | NR4KtSuCpNbZyKepu4VGtHozzWhY/FiL2SzOePNeTRqN2dKZOzafmQbIvkIzdtYW | ||||||
|  | gp7eJxUeNL5CaizNF0r4Ojj1KThccV8bwch2gahF9hvUox1jin4nHeHC6Avnn6MW | ||||||
|  | prW9SsPdOSFyx3xJ26AiicfNvMjfPwM1dakq+rJ/y1n+m/ec4D8DDNWy7420uF+e | ||||||
|  | cr43WQqC4B0NjxI/gSxq6VJexI30MSqWfOSumeLqFNaFvqh0E+xXbo4hsw6Zsd9x | ||||||
|  | Lpom30BOqVG5FE74FcmnJybsI7zvhDq1trU2lVYs0d+ypCyDpKBmbhNX/INWmiIX | ||||||
|  | MlUIyDVCYR3CsILS6HHU+qfVERz6Km1lA6HD+qo7irY1GFo8m19JpdtB/K7WdXnC | ||||||
|  | XSySYJU0ZDCIIaNjhtmh1oQeCmy+L9ATtW0r3Y6N0ZEm/wls5piTGYVKougweN95 | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |         <KeyDescriptor use="signing"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIESzCCArOgAwIBAgIUOSgsBql9Vez9kTLTLJy4S1e2dyYwDQYJKoZIhvcNAQEL | ||||||
|  | BQAwIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrMB4XDTIyMDgw | ||||||
|  | NTEzMzE1OFoXDTQyMDgwNTEzMzE1OFowIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAhPzC | ||||||
|  | VZ8lRPrHxfhz1XmGbzgQngV/Ua+6QL6zqC7fFO0bMCFz79c/xgS3YSqEAQa9971u | ||||||
|  | rI+T7YXJ5D5wFtTHMEbtB7B9ZR/pkAvj/FIiaWsVfVjv/c0cWTKKKdLKqQ2sFWzx | ||||||
|  | hnhoaaoXJWguQdm1UQ7rd0JrRllmlKhlUeCB6ecSblAOxsvNeA5+yDXAfj+8j/wp | ||||||
|  | +VMCyA80QUo5HyyBfQXOrAQVWTWWFw2x5+sfDVvfxfOD88dvhQM5cN3+XxBsSysE | ||||||
|  | m3q4PmpbfZdXlXgGdIwyYk3EiB/Qen+iat4i3QwVAHRV1TY8FVehHLTVkN9v/PoB | ||||||
|  | 5637rFEhSKcswpN1b6nuvUHNfJunu7KghVl6xRQsBg6z1/K6GBl5r7vzSvwzalTG | ||||||
|  | DqW/x9pkCfPhD7ZtvdNvplaAF1aG3CU8zsYA5w1uLvWuqGlsWFfm2aLSOIsNotW/ | ||||||
|  | uvB1AO1Chc8vm5N+QKgoC2SQiqttgF04a1h5KGF7b/8rPX8RUkE0YJxeaD8NAgMB | ||||||
|  | AAGjdzB1MB0GA1UdDgQWBBTXom6CZDuB3vgQYqplZphLaD4OfjBUBgNVHREETTBL | ||||||
|  | ghhpZHAtY2x1c3Rlci5tYWZvby5vcmcudWuGL2h0dHBzOi8vaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBgQAs | ||||||
|  | aJGGpMRYfTtCCsEvmAXhrSrrXZq2dHeETX6TgQh21cd810lEwewXtSIWbSqbzB5Y | ||||||
|  | RaQo9mV8TzVk0sa5yYXNz5cIAOxSfDZuN3zYL1T+Db5GIqrUtNbmU/TOabwS0YsW | ||||||
|  | LCxhblJV2XVeqqlMjMdq413EEyKeAvofnWCnROGimrR7DLdd4iI3EXC2N8zOfNj0 | ||||||
|  | kA4hNKktsm/T7nBJMfrqlfLKxrgt+SqhYkJyzSTu5j8lb9tt1dvBvXKfuls9uoa/ | ||||||
|  | nYBGSlPBEi8uyleSQcw/mR6lbvvW1AL6sAy7cDhTZh1jJFgHn39kZ9IIFOC1kbHt | ||||||
|  | rStp19ng60OL8xSS6Mnhzkf09zQdnzkI9ngLcYXqwwyMQCXRANJZ6twGbfwCzfgq | ||||||
|  | UqxR4Lg7sd4JXA8YAeNOgu3HwFw+RsBgEDoI16+1NrnliYQYD6Bvqx71z+CianNq | ||||||
|  | yAPojc2UQSeT7H9GFWbgNnQF6XsRW7xtNPnZmbZ9Og3Wok1nT38hEr+4UqtC8n8= | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |         <KeyDescriptor use="encryption"> | ||||||
|  |             <ds:KeyInfo> | ||||||
|  |                     <ds:X509Data> | ||||||
|  |                         <ds:X509Certificate> | ||||||
|  | MIIESzCCArOgAwIBAgIUC9wy4S7aa3PVBUkskC6TbAMIE1IwDQYJKoZIhvcNAQEL | ||||||
|  | BQAwIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIubWFmb28ub3JnLnVrMB4XDTIyMDgw | ||||||
|  | NTEzMzE1OVoXDTQyMDgwNTEzMzE1OVowIzEhMB8GA1UEAwwYaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtiS6 | ||||||
|  | AFIP3HB2orq7ywGx5flACG1SSLD5FmYtUXJRhSOexFYIqiPBUW9ZTRqWiKyHdHbP | ||||||
|  | AQwQHAczU8NAmA9c4tgoQfhmmpSHRl66U4pAq7c8cwr82ZIkAJUBUtwUfLW1l1rl | ||||||
|  | sNuGojwpE+d0R4kNnYfkSpt+QX+Sh5peGVuT3F267W1wE8eGTELvwemeHbpdtMDp | ||||||
|  | ExyrLjBfbndsk4GHlrnHs9yx912yte/dAHPnFOvz1JOXhA7CIfzak+Tbf3/3tAX+ | ||||||
|  | gDZ7DY+r3VTYTVL32JDvAliYLVKt5CweP46Ad8HassrUhv3gTkIf72uoZt7F8XuI | ||||||
|  | H8YoQheYOG9vFZ89P1SVEwsGvCRJExaYOjv1FbAsWMG6xCSdoAfcrhvrLxtu4tkb | ||||||
|  | uPum8bmMked1actC7wo8R4o2CGmDJ2n5lUZNUgMRix4Tn92l5MYWyFbo4zPW8sfF | ||||||
|  | e3gSFzsLt1OhuJV1Hd6vl35izACaU0pr0GWSyVJpaebkPTWw19Hwpz9FYArBAgMB | ||||||
|  | AAGjdzB1MB0GA1UdDgQWBBR0GeOz/XAhDhLcYJyFEAWes+P6vDBUBgNVHREETTBL | ||||||
|  | ghhpZHAtY2x1c3Rlci5tYWZvby5vcmcudWuGL2h0dHBzOi8vaWRwLWNsdXN0ZXIu | ||||||
|  | bWFmb28ub3JnLnVrL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBgQAj | ||||||
|  | YoK2BNmXK3KOQwQPY6/3DqoFzEU9F4S8cdDjrbpjHA+UmsmA7PHQC+mE3PJoNY6A | ||||||
|  | LnRJ2RDpnAZLSK1K/enRJdGSyWaD+gshhAUBie6xrFamXe5IG9QiF6O7VKsu+kpM | ||||||
|  | Qtp6iLK/B+Jos8zq0NJrKpCtixepMG1IbAcMcVnqkteiT+a9fmyIMaHcTLY+aEvW | ||||||
|  | 2bfgvszgJ4rcdY5xSDiVcPtcTGuoDsyQW686tImn0sqmOJLB8q+Fo2ULFxPVc8UE | ||||||
|  | HXngmqrZ5c9I5pa8TmL1VybSxSuQ2CUiTsgbpatiL6S8dK8ex3mUCpdMW5vKO0uQ | ||||||
|  | +8JiI8ur72059JpJzbTuKezT+8A124QiUOkfsJdwqHD3+APDVXiFGUGRPFHe4a/g | ||||||
|  | YQnrYa1KOgO83dl6K0GT1pA3+RnZZEBgq7lTYHpxcavTYRy6Dvj8Of8gu7EZo7fJ | ||||||
|  | +Ety/QGKzDDc+h5bLNo2PuDx2wXdbpPQxpYgWdVNgVOdW9vumrWhcxLtNfe9vyQ= | ||||||
|  |                         </ds:X509Certificate> | ||||||
|  |                     </ds:X509Data> | ||||||
|  |             </ds:KeyInfo> | ||||||
|  |  | ||||||
|  |         </KeyDescriptor> | ||||||
|  |  | ||||||
|  |         --> <!--<AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp-cluster.mafoo.org.uk:8443/idp/profile/SAML2/SOAP/AttributeQuery"/>-->  <!-- | ||||||
|  |         --> <!-- If you uncomment the above you should add urn:oasis:names:tc:SAML:2.0:protocol to the protocolSupportEnumeration above-->  <!-- | ||||||
|  |         --> <!--<AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://idp-cluster.mafoo.org.uk:8443/idp/profile/SAML1/SOAP/AttributeQuery"/>-->  <!-- | ||||||
|  |  | ||||||
|  |     </AttributeAuthorityDescriptor>-->  | ||||||
|  |  | ||||||
|  | </EntityDescriptor> | ||||||
		Reference in New Issue
	
	Block a user
	 root
					root