Homepage | About EASA | Contact
The Security Assertion Markup Language or SAML is an XML-based data format for exchanging authentication and authorization data between an identity provider and a service provider .
The single most important requirement that SAML addresses is web browser single sign-on or SSO. Single sign-on allows a user to login with a single ID and password to gain access to a connected system or several systems without using different usernames or passwords. (http://en.wikipedia.org/wiki/SAML)
<!-- <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-security-context.xml </param-value> </context-param> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> -->
<!-- <bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider"> <constructor-arg> <value type="java.io.File">/usr/local/metadata/idp.xml</value> </constructor-arg> <property name="parserPool" ref="parserPool"/> </bean> -->
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider"> <constructor-arg> <value type="java.lang.String">http://idp.ssocircle.com/idp-meta.xml</value> </constructor-arg> <constructor-arg> <value type="int">5000</value> </constructor-arg> <property name="parserPool" ref="parserPool"/> </bean>
<bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider"> <constructor-arg> <value type="java.io.File">/usr/local/metadata/idp.xml</value> </constructor-arg> <property name="parserPool" ref="parserPool"/> </bean>
<bean id="samlUserDetailsService" class="com.easa.custom.auth.sso.saml.AttributeSAMLUserDetailsService"> <!-- If below is empty the NameID will be used --> <property name="usernameAttribute" value=""/> <!-- Below optional --> <!-- Firstname may be first or full name --> <property name="firstNameAttribute" value="FirstName"/> <property name="lastNameAttribute" value="LastName"/> <property name="emailAttribute" value="EmailAddress"/> </bean>
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter"> <constructor-arg> <bean class="org.springframework.security.saml.metadata.MetadataGenerator"> <property name="entityId" value="c"/> </bean> </constructor-arg> </bean>
<property name="entityBaseURL" value="http://myeasa/easa"/>
Now that SAML SSO has been configured, restart the EASA Server.
This metadata file needs to be added to the identity provider.
Find:
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter"> <constructor-arg> <bean class="org.springframework.security.saml.metadata.MetadataGenerator"> <property name="entityId" value="com.easa.sso"/> </bean> </constructor-arg> </bean>
Replace with:
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter"> <constructor-arg> <bean class="org.springframework.security.saml.metadata.MetadataGenerator"> <property name="entityId" value="com.easa.sso"/> <property name="extendedMetadata"> <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> <property name="sslHostnameVerification" value="allowAll"/> </bean> </property> </bean> </constructor-arg> </bean>
Recreate the metadata file, remove the old one, and add the new file to the identity provider.
Find:
<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl"/>
Replace with:
<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl"> <property name="responseSkew" value="180"/> </bean>