Spring Security Kerberos 설정 IWA 의 관건 적 인 절차 메모

2771 단어 iwa
더 읽 기
IWA: integrated windows authentication
간단 한 소개: Windows 도 메 인 환경 에서 터미널 사용 자 는 컴퓨터 windows 시스템 을 사용 할 때 도 메 인 계 정 을 통 해 로그 인 했 습 니 다. 일부 application 을 사용 할 때 도 이런 방식 으로 인증 하고 싶 습 니 다. 모든 application 에 사용자 이름 비밀 번 호 를 다시 입력 할 필요 가 없습니다.
Kerberos 의 인증 원 리 는 복잡 한 것 같 습 니 다. 저도 잘 모 르 겠 습 니 다. 어쨌든 처음에 다른 사람의 패키지 로 환경 을 만 들 었 습 니 다. 여 기 는 Spring Security Kerberos (이하 SSK) 를 사 용 했 습 니 다.
http://docs.spring.io/spring-security-kerberos/docs/1.0.1.RELEASE/reference/htmlsingle/
문서 가 비교적 상세 합 니 다. 주로 다음 과 같은 기능 을 제공 합 니 다.
1. Authentication Provider
2. Spnego Negotiate
3. Using KerberosRestTemplate
4. Authentication with LDAP Services
프로젝트 에서 기능 2 를 사 용 했 습 니 다. 사용자 가 로그 인 페이지 를 방문 할 때 SSK 에서 제공 하 는 Filter: Spnego Authentication Processing Filter 는 사용자 Http Request 의 Authorization Header 를 검사 합 니 다. 인증 에 실패 하면 entry Point (Spnego Entry Point) 의 comence 방법 에서 다음 코드 를 실행 합 니 다.브 라 우 저 에서 이 response 를 가 져 오 면 현재 url 에 kerbeos ticket 을 자동 으로 보 냅 니 다.
response.addHeader("WWW-Authenticate", "Negotiate");
response.setStatus(401);

Filter 로 돌아 가면 브 라 우 저 에서 kerbeos ticket 을 보 내 면 다음 과 같은 논리 로 이 ticket 을 검사 합 니 다.
if ((header != null) && ((header.startsWith("Negotiate ")) || (header.startsWith("Kerberos ")))) 

그리고 Kerberos Service Authentication Provider 를 호출 하여 SunJaas Kerberos Ticket Validator 를 호출 하여 kerberos ticket 을 검사 합 니 다.클래스 이름 으로 볼 때 바 텀 자바 자신 이 kerbeos 에 대한 지원 에 의존 하여 JaaS 로 만 들 었 습 니 다.
검사 에 성공 하면 SSK 가 봉 인 된 Authentication 대상 을 받 을 수 있 습 니 다. user principal 이 포함 되 어 있 습 니 다. 사용자 의 다른 속성 은 kerbeos 에서 어떻게 얻 는 지 모 르 겠 습 니 다. 저희 프로젝트 는 사용자 가 AD 의 연결 정 보 를 따로 설정 한 다음 에 저희 가 자발적으로 찾 아야 합 니 다. 다른 항목 이 어떻게 해결 되 는 지 모 르 겠 습 니 다.
구축 과정 에서 비교적 번 거 로 운 것 은 windows domain contrller (나의 domain contrller 와 KDC kerbeos distribution center 는 같은 기계) 의 설치 와 keytab 파일 의 생 성 이다.그러나 windows server 2012 는 domain 을 만 드 는 것 이 비교적 간단 하 다. 기본적으로 머리 가 없 는 다음 단 계 를 하면 된다.
keytab 파일 은 domain contrller 라 는 서버 에서 생 성 된 다음 application 이 있 는 server 로 복사 하여 SSK 를 통 해 keytab 파일 이 있 는 위치 와 서비스 이름 을 지정 합 니 다.생 성 명령 은 다음 과 같 습 니 다:
domain controller 에서 실행 되 는 두 명령 은 다음 과 같 습 니 다.
setspn -A HTTP/url.[domainName] [username]

setspn -A HTTP/host1.domain.com tomcat1
ktpass -out c:\tomcat1.keytab -mapuser [username]@[domainName] -princ HTTP/url.idm-domain.com@[domainName] -pass [password] -ptype KRB5_NT_PRINCIPAL -crypto All

ktpass -out c:\tomcat1.keytab -mapuser [email protected] -princ HTTP/[email protected] -pass 1234 -ptype KRB5_NT_PRINCIPAL -crypto All


좋은 웹페이지 즐겨찾기