2014-05-19 8 views
0

내 목표 : Java 기반 웹 응용 프로그램에서 SSO를 구현하십시오. 내 문제 : 나는 보안 사람이 아니야 ...스프링 보안 kerberos 확장 기능이있는 keytab 파일 사용

약간의 조사 후 나는 봄 보안 kerberos 확장이 필요하다는 것을 발견했다. (또한 아파치 시로를 들여다 보았지만 로그인 페이지로만 찾을 수 있었다).

나는 다음과 같은 프로젝트의 샘플을 사용 : 내가 키 탭을 만들 필요가 있음을 깨달았다 https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-sample

. 나는 키 탭을 사용하려고 할 때 나는 다음과 같은 오류 있어요 :

javax.security.auth.login.LoginException: Unable to obtain password from user 

나는 그것이 wrong keytab location 발생할 수 있다고보고이 오류에 대한 몇 가지 세부 사항을 찾고, 그러나이 여기에 사실이 아니다 - 나는 소스로 디버깅 keytab 파일이로드 된 것을 확인했습니다.

그래서 키탭을 확인하고 확인했는지 확인했습니다. 나는 시험

setspn -a HTTP/[email protected] MYDOMAIN.COM\MyUser 

: 나는 다음과 같은 명령을 참고 MyUser에 대한 SPN을 만들어

물론
ktpass /out http-web.keytab /mapuser [email protected] /princ HTTP/[email protected] /pass MyPass /ptype KRB5_NT_PRINCIPAL 

: 첫째, 이것은 내 키 탭을 만드는 데 사용 (긴 진화 후) 마지막 명령이다 에서 다음과 SPN :

setspn -Q HTTP/[email protected] 

그리고 성공적인 결과를 얻었다 :

기존 SPN이 발견되었습니다!

지금 나는 다음 명령을 실행하여 참고 MyUser에 대한 티켓을 획득 할 수 있는지 테스트하고 싶었 :
kinit [email protected] 

나는 성공적인 결과를 얻었다 ("새 티켓이 캐시 파일에 저장됩니다 ....내 키 탭은 어떤 키가 포함되어 있는지 확인하기 위해 도구를 klist를 사용

Exception: krb_error 0 Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type: No error KrbException: Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type: 

:

kinit [email protected] -k -t http-web.keytab 

는 다음과 같은 예외를 얻었다 ")

지금 내 키 탭으로 테스트하고 싶어

klist -e -K -k -t http-web.keytab 

다음 결과를 얻었습니다.

마지막 필사적 인 시도로
KVNO: 8 
Key type: 23 
Key: 0x47bf8039a8506cd67c524a03ff84ba4e 
Time stamp: Jan 01, 1970 02:00 

, 나는 참고 MyUser에 대해 다음 계정 옵션을 선택 :

    이 계정
  • 계정 suppoerts의 Kerberos AES 128 비트 암호화
  • 계정에 대한
  • 사용의 Kerberos DES 암호화 유형 suppoerts Kerberos AES 256 비트 암호화

이러한 옵션을 설정하면 문제가 발생하지만 지금은 실행하면 확실하지 않습니다

kinit [email protected] 

나는 다음과 같은 오류가 발생합니다 :

Exception: krb_error 14 KDC has no support for encryption type (14) KDC has no support for encryption type 
KrbException: KDC has no support for encryption type (14) 

그래서 내가 여기 가지 필사적 해요, 난 정말 내가 뭘하는지 모르겠어요. 그것은 모두 시행 착오의 문제입니다 (주로 오류). 누군가가 여기를 통해 나를 안내 할 수 있다면 많은 도움이 될 것입니다.

덕분에, 리 오르

답변

0

바보 같은 실수로 밝혀졌다. 나는 servicePrincipal과 같은 principal 이름 대신 사용자 계정을 봄에 주입했습니다.