mbohun
5/28/2015 - 8:53 AM

org.jasig.cas.services.RegexRegisteredService usernameAttribute no multi-value support

org.jasig.cas.services.RegexRegisteredService usernameAttribute no multi-value support

    <bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"
            p:registeredServices-ref="registeredServicesList" />

    <util:list id="registeredServicesList">
        <bean class="org.jasig.cas.services.RegexRegisteredService">
            <property name="id"              value="0" />
            <property name="name"            value="HTTP and IMAP" />
            <property name="description"     value="Allows HTTP(S) and IMAP(S) protocols" />
            <property name="serviceId"       value="^(https?|imaps?)://.*" />
            <property name="evaluationOrder" value="10000001" />

            <!-- TODO: usernameAttribute needs a fix to map ALL possible email field names: email, email-address, etc. -->
            <property name="usernameAttribute"><!-- this does NOT work, usernameAttribute insists on being java.lang.String -->
                <map>
                    <entry key="email">
                        <list>
                            <value>email</value>
                            <value>email-address</value>
                        </list>
                    </entry>
                </map>
            </property>

            <property name="allowedAttributes">
                <list>
                    <!-- shared attributes: facebook, google -->
                    <value>email</value>

                    <!-- facebook specific -->
                    <value>first_name</value>
                    <value>last_name</value>
                    <value>verified</value>
                    <value>location</value>

                    <!-- github specific -->

                    <!-- google -->
                    <value>given_name</value>
                    <value>family_name</value>
                    <value>verified_email</value>

                    <!-- linkedin -->
                    <value>email-address</value>
                    <value>first-name</value>
                    <value>last-name</value>

                    <!-- twitter -->
                    <!-- TODO: twitter is a placeholder only for now, pac4j-1.4.2-SNAPSHOT does not support at the moment                                            
                         passing the 'include_email=true' argument to the twitter's authentication endpoint URL.                                                     
                    -->

                </list>
            </property>
        </bean>
    </util:list>