Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要帮助使用SpringSecurityCore和SpringSecurityLDAP将用户详细信息映射到Grails应用程序中的用户类_Spring_Grails_Groovy_Ldap - Fatal编程技术网

我需要帮助使用SpringSecurityCore和SpringSecurityLDAP将用户详细信息映射到Grails应用程序中的用户类

我需要帮助使用SpringSecurityCore和SpringSecurityLDAP将用户详细信息映射到Grails应用程序中的用户类,spring,grails,groovy,ldap,Spring,Grails,Groovy,Ldap,我正在构建一个web应用程序,其中用户将根据我们的ldap数据库进行身份验证,但该应用程序本身不包含用户数据库,因此除角色外的所有详细信息都将来自ldap。经过很多努力,我已经让我的应用程序连接到数据库并进行身份验证,但我无法将任何用户详细信息映射到主体 My Config.groovy包含以下内容: grails.plugin.springsecurity.ldap.search.base = 'OU=***,DC=***,DC=***' grails.plugin.springsecurit

我正在构建一个web应用程序,其中用户将根据我们的ldap数据库进行身份验证,但该应用程序本身不包含用户数据库,因此除角色外的所有详细信息都将来自ldap。经过很多努力,我已经让我的应用程序连接到数据库并进行身份验证,但我无法将任何用户详细信息映射到主体

My Config.groovy包含以下内容:

grails.plugin.springsecurity.ldap.search.base = 'OU=***,DC=***,DC=***'
grails.plugin.springsecurity.ldap.search.filter = "(sAMAccountName={0})"
grails.plugin.springsecurity.ldap.mapper.userDetailsClass = '<pack.age>.award.MyUserDetails'
grails.plugin.springsecurity.ldap.context.managerDN = 'CN=***,OU=*** ,DC=***,dc=***'
grails.plugin.springsecurity.ldap.context.managerPassword = '[redacted]'
grails.plugin.springsecurity.ldap.context.server = 'ldaps://server:port'
grails.plugin.springsecurity.ldap.authorities.retrieveGroupRoles = false
grails.plugin.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugin.springsecurity.ldap.search.attributesToReturn = ['mail', 'displayName']
grails.plugin.springsecurity.providerNames = ['ldapAuthProvider'].
MyUserDetailsContextMapper.groovy:

import org.springframework.ldap.core.DirContextAdapter
import org.springframework.ldap.core.DirContextOperations
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.ldap.userdetails.UserDetailsContextMapper

import edu.bellevue.award.MyUserDetails

class MyUserDetailsContextMapper implements UserDetailsContextMapper {

   UserDetails mapUserFromContext(DirContextOperations ctx, String username,
                                  Collection authorities) {

      String fullname = ctx.originalAttrs.attrs['cn'].values[0]
      String email = ctx.originalAttrs.attrs['mail'].values[0].toString().toLowerCase()

      def userDetails = new MyUserDetails(username, '', true, true, true, true, true,
                        fullname, email)

      return userDetails
   }

   void mapUserToContext(UserDetails user, DirContextAdapter ctx) {
      throw new IllegalStateException("Only retrieving data from AD is currently supported")
   }
}
通过查看所有日志消息,我可以看到我的应用程序正在连接到数据库并进行身份验证,但如果我尝试打印主体(仅使用println或log.info),它只会显示anonymousUser。我不知道这是否相关,但我得到了一些例外抛出我

| Error 2014-02-12 15:43:25,630 [http-bio-8080-exec-1] ERROR [/award].[default]  - Servlet.service() for servlet [default] in context with path [/award] threw exception
Message: No signature of method: static java.lang.Math.max() is applicable for argument types: (java.lang.Integer, null) values: [4, null]
Possible solutions: max(int, int), max(double, double), max(float, float), max(long, long), min(int, int), wait()
    Line | Method
->>  251 | doAppend              in org.apache.log4j.AppenderSkeleton
而且:

AuthorizationFailureEvent[source=FilterInvocation: URL: /grails-errorhandler]
2014-02-12 15:43:25,720 [http-bio-8080-exec-1] DEBUG access.ExceptionTranslationFilter  - Access is denied (user is anonymous); redirecting to authentication entry point
Message: Access is denied
    Line | Method
->>   47 | decide    in grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager
AuthorizationFailureEvent[source=FilterInvocation: URL: /grails-errorhandler]
2014-02-12 15:43:25,720 [http-bio-8080-exec-1] DEBUG access.ExceptionTranslationFilter  - Access is denied (user is anonymous); redirecting to authentication entry point
Message: Access is denied
    Line | Method
->>   47 | decide    in grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager