[SPRING] AD 그룹을 사용자 역할 스프링 보안 LDAP에 매핑하는 방법
SPRINGAD 그룹을 사용자 역할 스프링 보안 LDAP에 매핑하는 방법
Java Spring MVC를 사용하여 웹 애플리케이션을 구축했습니다.
나는 단지 인증을 위해 LDAP 서버에 연결하는 스프링 보안을 설정하고있다.
성공적으로 설정하여 응용 프로그램에 로그인 할 수 있지만 AD 그룹을 Java 내 사용자 역할에 매핑하는 데 도움이되는 항목을 찾을 수 없습니다. 예를 들어 403 페이지는 금지 된 페이지 만 얻을 수 있습니다. 인증되었지만 아직 사용 권한이 없습니다.
나는 현재 :
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
<ldap-server id="ldapServer" url="LDAPURL" manager-dn="USER" manager-password="PASSWORD" />
<authentication-manager >
<ldap-authentication-provider
group-search-base="OU=GROUPS"
group-search-filter="sAMAccountName={0}"
user-search-base="OU=USERS"
user-search-filter="sAMAccountName={0}"
/>
</authentication-manager>
해당 사용자가 AD 그룹 g-group-UK-user의 일부 였다고 가정합니다. 그런 다음 AD 그룹을 ROLE_USER에 매핑하여 사용자가 전체 웹 앱을 볼 수있게하려고합니다.
그룹이 ADMIN이거나 USER 인 경우 매우 단순한 예제를 찾는 것처럼 보일 수 있습니다.이 경우 ROLE 접두어가 그룹에 추가되었거나 다른 메서드가 UserDetailContextMapper를 사용하고있는 것 같지만이 점을 명확하게 사용할 수 없습니다.
해결법
-
==============================
1.이렇게하려면 인증 관리자에서 다음을 사용했습니다.
이렇게하려면 인증 관리자에서 다음을 사용했습니다.
user-context-mapper-ref="customUserContextMapper"
그런 다음 다음 클래스를 사용하여 해당 사용자가 특정 AD 그룹에 속하는지 확인한 다음 ROLE_USER 역할을 권한에 할당합니다.
@Override public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) { Attributes attributes = ctx.getAttributes(); Object[] groups = new Object[100]; groups = ctx.getObjectAttributes("memberOf"); LOGGER.debug("Attributes: {}", attributes); Set<GrantedAuthority> authority = new HashSet<GrantedAuthority>(); for(Object group: groups) { if (group.toString().toLowerCase().contains("AD_GROUP_NAME".toLowerCase()) == true) { authority.add(new SimpleGrantedAuthority("ROLE_USER")); break; } } User userDetails = new User(username, "", false, false, false, false, authority); return userDetails; }
클래스는 사용자가 액세스 할 수있는 그룹이 사용자의 속성에 저장되고 다른 방식으로는 저장되지 않는다는 점에서 평소와 다른 구조를 가진 연결하는 LDAP 서버 때문에 평소보다 조금 복잡합니다. 어떤 그룹이 그 그룹에 속한 모든 사용자를 속성으로 가질 수 있습니다.
from https://stackoverflow.com/questions/27798607/how-to-map-ad-groups-to-user-role-spring-security-ldap by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3 / Spring Security 2.0.5에서 세션 시간 초과 감지 (0) | 2019.03.17 |
---|---|
[SPRING] 스프링 데이터 REST 투영 뒤에서 생성 된 SQL 쿼리 수정 (0) | 2019.03.17 |
[SPRING] 확장 스프링 양식 태그 라이브러리 속성 (0) | 2019.03.17 |
[SPRING] 안드로이드에서 스프링과 같은 패키지 스캐닝 구현하기 (0) | 2019.03.17 |
[SPRING] EclipseLink 2.0 및 Spring 3.0.5 및 Tomcat 6을 구성하는 방법은 무엇입니까? (0) | 2019.03.17 |