복붙노트

[SPRING] Grails Spring Security LDAP 및 Spring Security Core Plugin 설치를 한 번만 설치하십시오.

SPRING

Grails Spring Security LDAP 및 Spring Security Core Plugin 설치를 한 번만 설치하십시오.

기본적으로 이것은이 질문과 거의 같습니다. Spring Security 플러그인을 한 번만 설정하여 모든 응용 프로그램에서 사용할 수 있습니다. 스프링 보안 코어와 LDAP 플러그인을 설치 한 플러그인이 있습니다. 플러그인에서 grails run-app를하는 것은 효과적입니다. 내 주요 애플 리케이션에서 컨트롤러에 보안 주석을 갖고 싶다. 해당 플러그인을 내 메인 어플리케이션에로드하려고하면 grails.plugin.springsecurity.annotation 클래스를 해결할 수 없다는 오류가 발생합니다. 보안 가져 오기 grails.plugin.springsecurity.annotation.Secured. 컨트롤러에서 가져 오기 및 주석을 제거하면 보안 기능이 작동하지 않습니다. 여기에 내 SecuritytreeGrailsPlugin.groovy가 솔루션을 링크 된 질문과 내 솔루션을 결합하려는 시도와 함께 있습니다. 이 모든 작업을하려면 무엇을 추가해야합니까? 나는 Grails 2.3.11에있다. Btw 길 아래에 다른 정적 규칙을 추가하는 방법에 대해 어떻게 생각하나요? GrailsPlugin을 다시 편집해야합니까, 아니면 앱의 Config.groovy에 넣을 수 있습니까?

SecuritytreeGrailsPlugin.groovy (일부 LDAP 구성이 의도적으로 생략되었습니다)

import grails.plugin.springsecurity.SpringSecurityUtils
import grails.plugin.springsecurity.SecurityFilterPosition
import Securitytree.MyUserDetailsContextMapper
class SecuritytreeGrailsPlugin {
    // the plugin version
    def version = "0.1"
    // the version or versions of Grails the plugin is designed for
    def grailsVersion = "2.3 > *"
    // resources that are excluded from plugin packaging
    def pluginExcludes = [
        "grails-app/views/error.gsp"
    ]

    // TODO Fill in these fields
    def title = "Securitytree Plugin" // Headline display name of the plugin
    def author = "
    def authorEmail = ""
    def description = '''\

'''

    // URL to the plugin's documentation
    def documentation = "http://grails.org/plugin/de"

    // Extra (optional) plugin metadata

    // License: one of 'APACHE', 'GPL2', 'GPL3'
//    def license = "APACHE"

    // Details of company behind the plugin (if there is one)
//    def organization = [ name: "My Company", url: "http://www.my-company.com/" ]

    // Any additional developers beyond the author specified above.
//    def developers = [ [ name: "Joe Bloggs", email: "joe@bloggs.net" ]]

    // Location of the plugin's issue tracker.
//    def issueManagement = [ system: "JIRA", url: "http://jira.grails.org/browse/GPMYPLUGIN" ]

    // Online location of the plugin's browseable source code.
//    def scm = [ url: "http://svn.codehaus.org/grails-plugins/" ]

    def doWithWebDescriptor = { xml ->
        // TODO Implement additions to web.xml (optional), this event occurs before
    }


    def doWithSpring = {
        // TODO Implement runtime spring config (optional)
        beans = {

    ldapUserDetailsMapper(MyUserDetailsContextMapper) {
        // bean attributes
    }
    }
    }

    def doWithDynamicMethods = { ctx ->
        // TODO Implement registering dynamic methods to classes (optional)
    }

    def doWithApplicationContext = { ctx ->
        // TODO Implement post initialization spring config (optional)
        // Added by the Spring Security Core plugin:
    SpringSecurityUtils.securityConfig.userLookup.userDomainClassName = 'Securitytree.User'
    SpringSecurityUtils.securityConfig.userLookup.authorityJoinClassName = 'Securitytree.UserRole'
    SpringSecurityUtils.securityConfig.authority.className = 'Securitytree.Role'
    // LDAP using TrakFast server
    SpringSecurityUtils.securityConfig.ldap.context. managerDn = 'CN=Grails LDAP SA,DC=com,DC=trakfast'               
    SpringSecurityUtils.securityConfig.ldap.context. managerPassword = 'I3KU96oDK5'                                                                       
    SpringSecurityUtils.securityConfig.ldap.context. server = 'ldap://trakdomain01.trakfast.com:498'                                                                                  
    SpringSecurityUtils.securityConfig.ldap.search.filter= '(sAMAccountName={0})'                                                                                   
    SpringSecurityUtils.securityConfig.ldap.authorities.retrieveDatabaseRoles = true
    SpringSecurityUtils.securityConfig.controllerAnnotations.staticRules  = [
    '/':                ['permitAll'],
    '/index':           ['permitAll'],
    '/index.gsp':       ['permitAll'],
    '/assets/**':       ['permitAll'],
    '/**/js/**':        ['permitAll'],
    '/**/css/**':       ['permitAll'],
    '/**/images/**':    ['permitAll'],
    '/**/favicon.ico':  ['permitAll']
]

    // Added to change Denied Access page
    SpringSecurityUtils.securityConfig.adh.errorPage = null   
    SpringSecurityUtils.securityConfig.logout.postOnly = false

    }

    def onChange = { event ->
        // TODO Implement code that is executed when any artefact that this plugin is
        // watching is modified and reloaded. The event contains: event.source,
        // event.application, event.manager, event.ctx, and event.plugin.
    }

    def onConfigChange = { event ->
        // TODO Implement code that is executed when the project configuration changes.
        // The event is the same as for 'onChange'.
    }

    def onShutdown = { event ->
        // TODO Implement code that is executed when the application shuts down (optional)
    }
}

나는 컨트롤러 코드를 포함 할 필요가 없다고 생각했다. 그러나 내가 틀린다면 나는 그것을 공유 할 수있다.

편집 : 나는 링크 된 질문을 다시 읽고 사용자가 주요 애플 리케이션에 봄 보안 플러그인을 설치 보았다. 스프링 보안 플러그인을 설치했는데 코드가 컴파일되고 실행되지만 LDAP 인증이 작동하지 않습니다. 내가 만든 플러그인에서 작동하기 때문에 그것이 유효하다는 것을 나는 안다.

해결법

    from https://stackoverflow.com/questions/50494260/install-grails-spring-security-ldap-and-spring-security-core-plugin-configuratio by cc-by-sa and MIT license