<?xml version="1.0" encoding="UTF-8"?>

<!--
  -	 Namespace-based OpenID configuration
  -->

<b:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:b="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd">

	<http>
		<intercept-url pattern="/openidlogin.jsp*" access="permitAll"/>
		<intercept-url pattern="/images/*" access="permitAll"/>
		<intercept-url pattern="/css/*" access="permitAll"/>
		<intercept-url pattern="/js/*" access="permitAll"/>
		<intercept-url pattern="/**" access="authenticated"/>
		<logout logout-success-url="/"/>
		<openid-login login-page="/openidlogin.jsp" user-service-ref="registeringUserService"
				authentication-failure-url="/openidlogin.jsp?login_error=true">
			<attribute-exchange identifier-match="https://www.google.com/.*">
				<openid-attribute name="email" type="https://axschema.org/contact/email" required="true" count="1"/>
				<openid-attribute name="firstname" type="https://axschema.org/namePerson/first" required="true" />
				<openid-attribute name="lastname" type="https://axschema.org/namePerson/last" required="true" />
			</attribute-exchange>
			<attribute-exchange identifier-match=".*yahoo.com.*">
				<openid-attribute name="email" type="https://axschema.org/contact/email" required="true"/>
				<openid-attribute name="fullname" type="https://axschema.org/namePerson" required="true" />
			</attribute-exchange>
			<attribute-exchange identifier-match=".*myopenid.com.*">
				<openid-attribute name="email" type="https://schema.openid.net/contact/email" required="true"/>
				<openid-attribute name="fullname" type="https://schema.openid.net/namePerson" required="true" />
			</attribute-exchange>
		</openid-login>
		<remember-me token-repository-ref="tokenRepo"/>
	</http>

	<b:bean id="tokenRepo"
			class="org.springframework.security.web.authentication.rememberme.InMemoryTokenRepositoryImpl" />

	<authentication-manager alias="authenticationManager"/>

<!--
	A custom UserDetailsService which will allow any user to authenticate and "register" their IDs in an internal map
	for use if they return to the site. This is the most common usage pattern for sites which use OpenID.
 -->
	<b:bean id="registeringUserService" class="org.springframework.security.samples.openid.CustomUserDetailsService" />

<!--
	A namespace-based UserDetailsService which will reject users who are not already defined.
	This can be used as an alternative.
 -->
<!--
	<user-service id="userService">
		<user name="https://luke.taylor.myopenid.com/" authorities="ROLE_SUPERVISOR,ROLE_USER" />
		<user name="https://raykrueger.blogspot.com/" authorities="ROLE_SUPERVISOR,ROLE_USER" />
		<user name="https://spring.security.test.myopenid.com/" authorities="ROLE_SUPERVISOR,ROLE_USER" />
	</user-service>
 -->
</b:beans>
