[SPRING] Grails Spring Security LDAP 및 Spring Security Core Plugin 설치를 한 번만 설치하십시오.
SPRINGGrails 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
'SPRING' 카테고리의 다른 글
[SPRING] 동적 템플릿 문자열을 만드는 방법 (0) | 2019.02.28 |
---|---|
[SPRING] 사용자 정의 객체가있는 Oracle 저장 프로 시저에서 Spring jdbc를 사용하여 List <String> 반환 (0) | 2019.02.28 |
[SPRING] 404 연관 매핑 오류 (0) | 2019.02.28 |
[SPRING] 봄 Aop 로깅 줄 번호가 잘못되었습니다. (0) | 2019.02.28 |
[SPRING] 스프링 메일을 통해 대량 전자 메일을 보내는 성능 향상 (0) | 2019.02.28 |