Almost, I'm being kind of dense I think - and I apologize for that.   I'm
already using this functionality in the deployerConfigContext.xml   :
 <bean id="attributeRepository"

class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
        <property name="baseDN" value="dc=williams,dc=com"/>
        <property name="contextSource" ref="contextSource"/>
        <property name="requireAllQueryAttributes" value="true"/>
        <property name="ldapTemplate" ref="ldapTemplate" />
        <property name="queryAttributeMapping">
            <map>
                <entry key="username" value="sAMAccountName"/>
                <!--<entry key="username" value="uid"/>-->
            </map>
        </property>
        <property name="resultAttributeMapping">
            <map>
                <!-- Mapping between LDAP attributes (key) and Principal's
(value) -->
                <entry value="CN" key="cn" />
                <entry value="DN" key="distinguishedName" />
                <entry value="Groups" key="memberOf" />
            </map>
        </property>
    </bean>


This coupled with the fact that CAS is running in open mode (no services
registered at all so that any service can use it) seems to get back to a
test client the List of Groups.     ( I included a snippet from a jsp
output on a tutorial client in a previous message showing they all come
back).     Then on the client side I'm using
"org.springframework.security.cas.userdetails.GrantedAuthorityFromAssertionAttributesUserDetailsService"
to theoretically map those groups to become Authorities.   At this point
its ALMOST working.   That tutorial JSP shows the Groups can be returned to
the client but my real application when I step through
grantedAuthority....  doesn't see them.   Almost thinking I might have a
protocol mismatch.    The tutorial client is using the
Saml11TicketValidationFilter.    I think my real app is using
Cas20ServiceTicketValidator which I going to look at after my meeting.


On Mon, Feb 18, 2013 at 12:08 PM, Modi Tamam <[email protected]> wrote:

>
>    1. In order to add additional attributes to your server response, you
>    should add your attributes DAO, it's an implementation of
>    BasePersonAttributeDao(the code that I paste on the previouse mail was a
>    part of it, all other methods are not required if you are using
>    the UsernamePasswordCredentialsToPrincipalResolver class)
>    2. In order to include those attributes with your response, you should
>    add the allowed attributes element to your serviceRegistryDAO, edit the
>    deployConfiguration.xml file as follow:               <bean 
> id="serviceRegistryDao"
>    class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
>                <property name="registeredServices">
>                    <list>
>                        <bean
>    class="org.jasig.cas.services.RegexRegisteredService">
>                            .....
>                            .....
>                            *<property name="allowedAttributes">*
>    *   <list>*
>    *      <value>ROLES</value>*
>    *   </list>              *
>    * </property>*
>                        </bean>
>                    </list>
>                </property>
>            </bean>
>    3. Now, at this point your response should include your attributes
>    4. Now, you should retrieve them on your client and parse the response
>    into your user details object. The parsing depends on what protocol are you
>    using (SAML?)
>
>
> Did I answer your question?
>
>
>
>
> On Mon, Feb 18, 2013 at 6:17 PM, Andrew Chandler <[email protected]>wrote:
>
>> Sorry I think I got sidetracked.    My question is:
>>
>> 1: Doesn't GrantedAuthorityFromAssertionAttributesUserDetailsService do
>> basically that already, just on the client side instead of the server?
>>
>> 2: Am I wrong - should that class actually be configured in to the Cas
>> Server instead?  (I've been trying to chain it in on the client side and
>> maybe that's my problem)
>>
>>
>>
>> On Mon, Feb 18, 2013 at 9:59 AM, Modi Tamam <[email protected]> wrote:
>>
>>> So, what is your question?
>>>
>>>
>>> On Mon, Feb 18, 2013 at 5:25 PM, Andrew Chandler <[email protected]>wrote:
>>>
>>>> Thanks - I appreciate the pointer.    I suspect I have to clean up my
>>>> project - all my testing has left a lot of dead ends I may need to start
>>>> over.   Part of my problem is we are making several web apps with both UI's
>>>> and restful web services.   We're trying to stay on the annotation side -
>>>> we had pretty much everything working when I was just using straight
>>>> spring-security with Active Directory - it's been the casifying of my
>>>> projects that's gotten me twisted up.   I've got the CAS server
>>>> authenticating and returning attributes properly - I can verify that with a
>>>> simple  CAS test web app that causes me to authenticate and then returns
>>>> the user details.   however that one doesn't use
>>>> spring-security-context.xml --- it strictly uses web.xml to set everything
>>>> up.   Part of my problem seems to be not knowing which things are required
>>>> in web.xml anymore and which things are best over in the
>>>> application-context.xml or the security-context.xml.
>>>>
>>>> However if I'm reading your snippet correctly above the purpose of that
>>>> is to take the Groups List and turn them into a granted authority?   If so
>>>> that is what I want.
>>>>
>>>> Here is a sample of what the test webapp client is getting back:
>>>>
>>>> request.getRemoteUser() = SChandle
>>>> request.getUserPrincipal() = SChandle
>>>>
>>>> The context root name of this application is /testApp1 Mon Feb 18
>>>> 09:22:43 CST 2013
>>>>
>>>>
>>>> Released AttributesGroups is a List:
>>>>    CN=LiveLinkUserList,OU=DynamicGroups,DC=WILLIAMS,DC=com
>>>>    CN=SSO_AtlasProd,OU=SecurityGroups,DC=WILLIAMS,DC=com
>>>>    CN=mmart_admin_Dev,OU=SecurityGroups,DC=WILLIAMS,DC=com
>>>>    CN=mmart_admin,OU=SecurityGroups,DC=WILLIAMS,DC=com
>>>>
>>>>
>>>>
>>>> On Sun, Feb 17, 2013 at 11:37 PM, Modi Tamam <[email protected]>wrote:
>>>>
>>>>> What you should is:
>>>>>
>>>>>    1.  implement your own *BasePersonAttributeDao.*
>>>>>    2. Override the getPerson(String uid) method.
>>>>>    3. configure the deployerConfigContext to use the above
>>>>>    implementation.
>>>>>
>>>>> Here is a snippet of an example:
>>>>> @Override
>>>>> public IPersonAttributes getPerson(String uid) {
>>>>>  UserDetails userDetails = userDetailsService.loadUserByUsername(uid);
>>>>>  Collection<? extends GrantedAuthority> authorities =
>>>>>  userDetails.getAuthorities();
>>>>>  if (!CollectionUtils.isEmpty(authorities)) {
>>>>>  Map<String, List<Object>> attributes = new LinkedHashMap<String,
>>>>>  List<Object>>();
>>>>>  List<Object> authoritiesLst = new LinkedList<Object>();
>>>>>  attributes.put("ROLES", authoritiesLst);
>>>>>  for (GrantedAuthority authority : authorities) {
>>>>>  authoritiesLst.add(authority.getAuthority());
>>>>>  }
>>>>>  IPersonAttributes retVal = new NamedPersonImpl(uid, attributes);
>>>>>  return retVal;
>>>>>  }
>>>>>  }
>>>>>
>>>>> The user details service is my attributes repository, you can replcae
>>>>> it with any other repository.
>>>>>
>>>>>
>>>>> On Mon, Feb 18, 2013 at 4:56 AM, Andrew Chandler <[email protected]>wrote:
>>>>>
>>>>>> I thought it would but I must be configuring it wrong.  The
>>>>>> attributes are coming in as a list of groups, I need them to be roles, or
>>>>>> testable as roles in spring,    my constructor for the bean you mention 
>>>>>> had
>>>>>> "attributes" for a parameter, I'm going to try switching that to groups
>>>>>> On Feb 17, 2013 8:17 PM, "Scott Battaglia" <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> I haven't tried in a while but doesn't this do what you want?
>>>>>>>
>>>>>>> http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/cas/userdetails/GrantedAuthorityFromAssertionAttributesUserDetailsService.html
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Scott
>>>>>>>
>>>>>>> On Fri, Feb 15, 2013 at 5:09 PM, Andrew Chandler 
>>>>>>> <[email protected]>wrote:
>>>>>>>
>>>>>>>> I'm hoping someone can help me with this before I go bald.
>>>>>>>>
>>>>>>>> I've successfully followed the tutorials and got CAS server up and
>>>>>>>> running on Tomcat on SSL.   For now all web applications are hosted in 
>>>>>>>> this
>>>>>>>> single Tomcat instance.     Cas is configured to authenticate against
>>>>>>>> Active Directory via the LDAP Bind process (not fastbind).   I also 
>>>>>>>> have it
>>>>>>>> configured to use the attributeRepository
>>>>>>>> org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao
>>>>>>>>
>>>>>>>> Following a different tutorial I setup a simple jsp client webapp
>>>>>>>> that showes the information it got back from CAS and I see all my AD 
>>>>>>>> groups
>>>>>>>> in the attributes that were placed on the principals.
>>>>>>>>
>>>>>>>> What I am trying to do in my Spring based Web App is reproduce what
>>>>>>>> I successfully did when I had that single webapp authenticating using
>>>>>>>> spring security to Active Directory.    The groups became authorities 
>>>>>>>> and
>>>>>>>> were used in filtering access.    My problem is the only client 
>>>>>>>> examples
>>>>>>>> I've seen to access the attributes returned from CAS weren't really
>>>>>>>> participating in the spring authentication process.   I'm looking for a
>>>>>>>> good, simple example using current versions of spring security (not 
>>>>>>>> older
>>>>>>>> 2.x stuff) that will take the authentication I get back from CAS and 
>>>>>>>> use
>>>>>>>> the "Groups" properties and turn those into roles during the security
>>>>>>>> filtering process so that the user can access protected resources.    
>>>>>>>> Any
>>>>>>>> info would help.
>>>>>>>>
>>>>>>>> --
>>>>>>>> You are currently subscribed to [email protected] as: 
>>>>>>>> [email protected]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> To unsubscribe, change settings or access archives, see 
>>>>>>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>>>>>>
>>>>>>>>
>>>>>>>  --
>>>>>>> You are currently subscribed to [email protected] as: 
>>>>>>> [email protected]
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> To unsubscribe, change settings or access archives, see 
>>>>>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>>>>>
>>>>>>>  --
>>>>>> You are currently subscribed to [email protected] as: 
>>>>>> [email protected]
>>>>>> To unsubscribe, change settings or access archives, see 
>>>>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best Regards
>>>>> Mordechai Tamam
>>>>>
>>>>> --
>>>>> You are currently subscribed to [email protected] as: 
>>>>> [email protected]
>>>>> To unsubscribe, change settings or access archives, see 
>>>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>>>
>>>>>
>>>> --
>>>> You are currently subscribed to [email protected] as: 
>>>> [email protected]
>>>> To unsubscribe, change settings or access archives, see 
>>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>>
>>>>
>>>
>>>
>>> --
>>> Best Regards
>>> Mordechai Tamam
>>>
>>> --
>>> You are currently subscribed to [email protected] as: 
>>> [email protected]
>>> To unsubscribe, change settings or access archives, see 
>>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>>
>>>
>> --
>> You are currently subscribed to [email protected] as: 
>> [email protected]
>> To unsubscribe, change settings or access archives, see 
>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>
>>
>
>
> --
> Best Regards
> Mordechai Tamam
>
> --
> You are currently subscribed to [email protected] as: [email protected]
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-user
>
>

-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to