我已經成功地將JOSSO和Spring Security應用程序集成到我的Grails應用程序中(使用LDAP進行用戶控制)。如何在使用JOSSO和Spring Security的Grails應用程序中從LDAP獲取定製屬性?
由於JOSSO已經管理身份驗證,因此我使用Spring Security集成的「預驗證方案」。這是我與春季安全配置resources.groovy
內容:
def developmentEnvironment = {
if (grailsApplication.config.grails.plugins.springsecurity.active) {
preAuthenticatedAuthenticationProvider(PreAuthenticatedAuthenticationProvider) {
preAuthenticatedUserDetailsService = ref('preAuthenticatedUserDetailsService')
}
preAuthenticatedUserDetailsService(PreAuthenticatedGrantedAuthoritiesUserDetailsService) {
}
j2eePreAuthFilter(J2eePreAuthenticatedProcessingFilter) {
authenticationManager = ref('authenticationManager')
authenticationDetailsSource = {
J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource authenticationDetailsSource ->
mappableRolesRetriever = {
SimpleMappableAttributesRetriever mappableAttributesRetriever ->
mappableAttributes = ['app_admin', 'app_user', 'app_report', 'app_access'] as Set
}
userRoles2GrantedAuthoritiesMapper = {
SimpleAttributes2GrantedAuthoritiesMapper grantedAuthoritiesMapper ->
convertAttributeToUpperCase = "true"
}
}
}
preAuthenticatedProcessingFilterEntryPoint(Http403ForbiddenEntryPoint) {
}
preAuthenticatedExceptionTranslationFilter(ExceptionTranslationFilter) {
authenticationEntryPoint = ref('preAuthenticatedProcessingFilterEntryPoint')
}
}
}
一切工作正常,我可以訪問Grails的側面默認屬性(例如使用springSecurityService
)。
但現在我有一個新的要求,從LDAP獲取自定義屬性(例如ownership
)。所以,我將這些屬性添加到LDAP下的我的用戶,據我所知JOSSO會自動獲得這些屬性,但我無法在grails應用程序端獲得這些屬性。 有什麼辦法可以在Grails端獲得這些屬性?
也許我應該重寫的UserDetails和UserDetailsService的類來添加自己的自定義屬性。問題是我如何獲取UserDetailsService類的loadUserByUsername(..)方法下的用戶數據。 – 2012-07-13 06:23:08