我已经成功地将 JOSSO 和 Spring Security 应用程序集成到我的 Grails 应用程序中(使用 LDAP 进行用户控制)。
由于 JOSSO 已经管理身份验证,因此我使用“预身份验证场景”进行 Spring Security 集成。这是我resources.groovy
与 Spring Security 配置相关的内容:
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 方面获得这些属性?