2013-01-17 4 views
1

내 Java 응용 프로그램에 postdatable Kerberos ticket이 필요합니다. 그러나 GSSContext 인터페이스에서 어떤 메소드도 찾지 못했습니다. Java가이 Kerberos 기능을 지원하지 않습니까?자바로 게시 할 수있는 Kerberos 티켓

목적은 다음과 같습니다. 응용 프로그램에서 사용자는 앞으로 얼마 동안 실행될 배치를 설정할 수 있습니다. 그리고 응용 프로그램 서버는 원래 티켓이 만료되었을 때 배치의 실행시 유효한 위임 된 티켓을 사용해야합니다.

편집 : 내 첫 번째 문을 명확히하기 위해 : 나는 GSSContext, GSSContextImpl뿐만 아니라 GSSContextImplKrb5Context에서만 사용할 수있는 setAuthTime() 방법에 대한 액세스 권한을 부여하지 않는 것을 발견했다. 모든 세부 사항을 파헤 치지 않고도 문서화되지 않은 클래스에 직접 액세스 할 수있는 경우에만 후기 인증이 가능할 것으로 보입니다.

클라이언트 브라우저가 @Michael-O가 지적한대로 올바른 플래그가 설정된 티켓을 보내는 데 추가 문제가있는 것처럼 보이기 때문에 사용자에게 묻는 또 다른 해결책을 찾아야 할 것입니다. 사용자 이름과 암호는 일괄 처리로 암호화하여 저장 한 다음 일괄 시작 시간에 새 티켓을 요청하기 만하면됩니다.

오래 된 티켓의 개념은 내 문제에 적절하게 들리지만 실제 사용이 부족하여 기존 환경에서 제대로 지원되지 않을 수 있습니다. 내 댓글 게다가

+1

Frank, [RFC4120] (http://www.ietf.org/rfc/rfc4120.txt)의 2.4 장을 실제로 읽었습니까? 클라이언트의 TGT는 초기 플래그'MAY-POSTDATE'를 가져야합니다. 먼저 확인하십시오. 예, Java GSS는이를 지원하지만 나 자신을 시도하지 않았습니다. [this] (http://i.imgur.com/VPXrA.png) 검색을 참조하십시오. –

+0

좋은 지적! 클라이언트가 브라우저이기 때문에 아마도 티켓 설정에 영향을 줄 수 없습니다. – FrankPl

+0

'kinit' unter Ubuntu를 확인했고 티켓 (TGT) => postdatable에 대한 시작일을 설정할 수 있습니다. 또한 kerbtray로 Windows 자격 증명 캐시를 검사했으며 TGT는'MAY-POSTDATE '가 아닙니다. SSPI는이 주어진 TGT를 사용하기 때문에 내가 이해하는 한 당신은 늦은 전달 TGT를 가질 수 없습니다. 이 매우 구체적인 질문은 MIT Kerbros 메일 링리스트에서 제기해야합니다. devs의 의견을 듣고 싶습니다. –

답변

0

:

프랭크, 당신이 실제로 RFC4120의 장 2.4을 읽을했다?. 클라이언트의 TGT는 초기 플래그 MAY-POSTDATE을 가져야합니다. 먼저 확인하십시오. 예, Java GSS는이를 지원하지만 나 자신을 시도하지 않았습니다. this 검색을 참조하십시오.

프랭크, 당신의 문제에 대한 해결책있다. 어제 나에게 왔어. 나는 이미 이것을 대답했다. 이 코드를 backport하는 것은 약간의 작업일지도 모르지만 그만한 가치가 있습니다.

Generating AD Kerberos tickets without user password을 참조하십시오.

+0

고맙습니다.어쨌든 사용자 이름과 암호를 묻는 해결책을 고집 할 것입니다 (어쨌든 현재 버전의 응용 프로그램이므로 사용자 관점에서 변경되지 않음). 그런 다음 새 티켓을 생성하십시오 우리가 필요할 때 서버에서. – FrankPl

+0

작동하지만 정말 우아하지 않습니다. 패스워드 만기/변경과 새로운 암호 변경의 황혼에서 당신의 접근 방식은 실패 할 것입니다. –

+0

전적으로 동의합니다. 하지만 노력과 결과의 균형을 맞추어야합니다. – FrankPl