Мне нужно отправить определенные атрибуты (скажем, человекочитаемое имя пользователя) с сервера клиенту после успешной аутентификации. Серверная часть была сделана. Теперь атрибут был отправлен клиенту. Из журнала я вижу:
2010-03-28 23: 48: 56,669 ОТЛАДКА
Cas20ServiceTicketValidator: 185 -
Ответ сервера: http://www.yale.edu/tp/cas'>
a@b.com
<cas:proxyGrantingTicket>PGTIOU-1-QZgcN61oAZcunsC9aKxj-cas</cas:proxyGrantingTicket>
<cas:attributes>
<cas:FullName>Test account 1</cas:FullName>
</cas:attributes>
</cas:authenticationSuccess> </cas:serviceResponse>
Пока я не знаю, как получить доступ к атрибуту в клиенте (я использую Spring security 2.0.5).
В authenticationProvider userDetailsService настроен на чтение дБ для аутентифицированного принципала.
<bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider">
<sec:custom-authentication-provider />
<property name="userDetailsService" ref="clerkManager"/>
<!-- other stuff goes here -->
</bean>
Теперь в моем контроллере я могу легко сделать это:
Clerk currentClerk = (Clerk)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
В идеале, я могу каким-то образом заполнить атрибут этого объекта Клерка как другое свойство. Как это сделать?
Или каков рекомендуемый подход для совместного использования атрибутов во всех приложениях в рамках централизованного характера CAS?