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