Here is my entire deployerConfigContext.xml;
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:sec="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager"> <constructor-arg> <map> <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" /> <entry key-ref="primaryAuthenticationHandler" value="#{null}" /> </map> </constructor-arg> <property name="authenticationPolicy"> <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" /> </property> </bean> <!-- Required for proxy ticket mechanism. --> <bean id="proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="supportsTrustStoreSslSocketFactoryHttpClient" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/> <property name="url" value="jdbc:jtds:sqlserver://localhost/Bonfire;integrated security=false"/> <property name="username" value="xxxxx"/> <property name="password" value="xxxxxxxxxxxx"/> </bean> <bean id="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.BonfireAuthenticationHandler" p:dataSource-ref="dataSource" p:sql="EXEC dbo.LoginAuthenticateCAS ?, ?, ?" /> <!-- Required for proxy ticket mechanism --> <bean id="proxyPrincipalResolver" class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" /> <bean id="primaryPrincipalResolver" class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver" p:principalFactory-ref="principalFactory" /> <bean id="serviceRegistryDao" class="org.jasig.cas.services.JsonServiceRegistryDao" c:configDirectory="${service.registry.config.location:classpath:services}" /> <bean id="auditTrailManager" class="org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager" /> <bean id="healthCheckMonitor" class="org.jasig.cas.monitor.HealthCheckMonitor" p:monitors-ref="monitorsList" /> <util:list id="monitorsList"> <bean class="org.jasig.cas.monitor.MemoryMonitor" p:freeMemoryWarnThreshold="10" /> <bean class="org.jasig.cas.monitor.SessionMonitor" p:ticketRegistry-ref="ticketRegistry" p:serviceTicketCountWarnThreshold="5000" p:sessionCountWarnThreshold="100000" /> </util:list> </beans> On Wed, Jan 6, 2016 at 2:30 PM, Dmitriy Kopylenko <[email protected]> wrote: > Can you share your entire deployerConfigContext.xml? > > Thanks, > Dmitriy. > > On Jan 6, 2016, at 2:14 PM, John Bruestle <[email protected]> wrote: > > I wasn't erally expecting to change the username provided, although that > would be OK. I was just expecting to add an other data item to what the > validation response returnd. > > Anyway, I tried changing to: > > "usernameAttributeProvider" : { > "@class" : > "org.jasig.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider", > "usernameAttribute" : "def" > }, > "attributeReleasePolicy" : { > "@class" : > "org.jasig.cas.services.ReturnAllowedAttributeReleasePolicy", > "allowedAttributes" : [ "java.util.ArrayList", [ "cn", "abc", "def" ] ] > }, > > > And I am still not seeing the test "def" attribute I created in my > Authentication Handler by going: > > final Map<String, Object> attributes = new HashMap<>(); > attributes.put("abc", "123"); > attributes.put("def", "456"); > > I do wonder if I am suppose to be defining a different attribute > repository. Right now my deployerConfigContext.xml contains: > > > <bean id="attributeRepository" > class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao" > p:backingMap-ref="attrRepoBackingMap" /> > > <util:map id="attrRepoBackingMap"> > <entry key="uid" value="uid" /> > <entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> > <entry key="groupMembership" value="groupMembership" /> > <entry> > <key><value>memberOf</value></key> > <list> > <value>faculty</value> > <value>staff</value> > <value>org</value> > </list> > </entry> > </util:map> > > > > > On Wed, Jan 6, 2016 at 2:01 AM, Misagh Moayyed <[email protected]> > wrote: > >> Because you told your service to use the default CAS behavior when >> returning usernames, via: "@class" : >> "org.jasig.cas.services.DefaultRegisteredServiceUsernameProvider" >> >> You never told it which attribute should be used as the username. It >> cannot know that without your direct instructions. >> >> >> >> If you go back to the original link I sent you, that should help describe >> what options are available for providing usernames for registered services. >> Pick the one that works on an attribute. >> >> >> >> *From:* John Bruestle [mailto:[email protected]] >> *Sent:* Tuesday, January 5, 2016 3:19 PM >> *To:* CAS Community <[email protected]> >> *Cc:* [email protected] >> *Subject:* Re: [cas-user] Returning userid in Validation Response >> >> >> >> Thank you for your help. I think I am getting closer: >> >> >> >> As a test, I changed the bottom of my AuthenticationHandler to: >> >> >> >> final Map<String, Object> attributes = new >> HashMap<>(); >> >> attributes.put("abc", "123"); >> >> attributes.put("def", "456"); >> >> >> >> return createHandlerResult(credential, >> this.principalFactory.createPrincipal(username,attributes), null) >> >> >> >> And I updated the service definition to: >> >> >> >> { >> >> "@class" : "org.jasig.cas.services.RegexRegisteredService", >> >> "serviceId" : "^http://localhost/bonfire/cas/.*", >> >> "name" : "Bonfire Development", >> >> "id" : 10000017, >> >> "description" : "Bonfire Development CAS Single Sign-On", >> >> "proxyPolicy" : { >> >> "@class" : "org.jasig.cas.services.RefuseRegisteredServiceProxyPolicy" >> >> }, >> >> "evaluationOrder" : 0, >> >> "usernameAttributeProvider" : { >> >> "@class" : >> "org.jasig.cas.services.DefaultRegisteredServiceUsernameProvider" >> >> }, >> >> "logoutType" : "BACK_CHANNEL", >> >> "attributeReleasePolicy" : { >> >> "@class" : "org.jasig.cas.services.*ReturnAllAttributeReleasePolic*y" >> >> }, >> >> "accessStrategy" : { >> >> "@class" : >> "org.jasig.cas.services.DefaultRegisteredServiceAccessStrategy", >> >> "enabled" : true, >> >> "ssoEnabled" : true >> >> } >> >> } >> >> >> >> Only problem is that I am still just seeing only the the "user" attribute >> in the validation response. Is there something more I need to configure? >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On Tuesday, January 5, 2016 at 1:16:21 PM UTC-5, Misagh Moayyed wrote: >> >> Since you are on 4.1, your authentication handler is able to create the >> principal with all the attributes it needs. So, as long as your handler is >> stuffing that attribute into the final Principal that is created, you >> should be able to dictate to a service that the attribute should be used in >> the final response. >> >> >> >> See this as an example of how LDAP AuthN adds attributes: >> >> >> https://github.com/Jasig/cas/blob/4.1.x/cas-server-support-ldap/src/main/java/org/jasig/cas/authentication/LdapAuthenticationHandler.java#L196 >> >> >> >> Have yours do the same. You simply need to decide what the attribute name >> should be, and stuff it into a map that the principal carries for >> attributes. >> >> >> >> This is also relevant: >> >> >> https://jasig.github.io/cas/4.1.x/installation/Configuring-Principal-Resolution.html#principalresolver-vs-authenticationhandler >> >> >> >> *From:* [email protected] [mailto:[email protected]] *On Behalf Of *John >> Bruestle >> *Sent:* Tuesday, January 5, 2016 11:11 AM >> *To:* CAS Community <[email protected]> >> *Cc:* [email protected] >> *Subject:* Re: [cas-user] Returning userid in Validation Response >> >> >> >> Thanks. Yes, that tells me how to configure the response so it will show >> the specific attributes I want, but it doesn't tell me how to create the >> attributes. In my case, I'm getting a userid returned by the store >> procedure I'm calling in my AuthenticationHandler, when authenticating. >> I'd like to add code there, at the point that I know the userid, to store >> (resolve?) it as an attribute. How do I do that? >> >> >> >> >> >> On Tuesday, January 5, 2016 at 12:28:38 PM UTC-5, Misagh Moayyed wrote: >> >> See if this helps: >> >> https://jasig.github.io/cas/4.1.x/integration/Attribute-Release.html >> >> >> >> Section “Principal-Id Attribute”. >> >> >> >> *From:* [email protected] [mailto:[email protected] >> <[email protected]>] *On Behalf Of *John Bruestle >> *Sent:* Tuesday, January 5, 2016 9:02 AM >> *To:* CAS Community <[email protected]> >> *Subject:* [cas-user] Returning userid in Validation Response >> >> >> >> My system's usernames used for logins are not the same as the unique >> userid's used by the database. In fact, usernames aren't necessarily >> unique and sometimes require the password to determine the specific >> userid. I need my validation response to return the userid. >> >> >> >> I already have a custom AuthenticationHandler, which implements >> AbstractJdbcUsernamePasswordAuthenticationHandler, that is correctly >> authenticating using a MSSQL stored procedure. One of the byproducts of >> calling the procedure is the userid, so that in the AuthenticationHandler >> we do know what the userid is. >> >> >> >> From my reading, it seems that there may be a way to store the userid >> away as an attribute, which could later be used as part of the validation >> response. I'm stuck however trying to figure out how to do this. I would >> appreciate some pointers, especially if they came with the specific XML >> files I need to modify and the functions I should call from within my >> AuthenticationHandler to store the attribute. >> >> >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "CAS Community" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> Visit this group at >> https://groups.google.com/a/apereo.org/group/cas-user/. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "CAS Community" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> Visit this group at >> https://groups.google.com/a/apereo.org/group/cas-user/. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "CAS Community" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> Visit this group at >> https://groups.google.com/a/apereo.org/group/cas-user/. >> > > > > -- > John Bruestle > [email protected] > (609) 737-7250 > > > -- > You received this message because you are subscribed to the Google Groups > "CAS Community" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/ > . > > > -- John Bruestle [email protected] (609) 737-7250 -- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.
