Windows Active Directory 환경에서 클라이언트의 SPNEGO 인증을 수행하는 Java 웹 응용 프로그램이 있습니다. 사용자를 인증하기 위해 이전의 SPNEGO SourceForge 프로젝트의 코드를 사용합니다.Java SPNEGO 인증 및 Kerberos 백엔드 서비스에 대한 제한된 위임 (KCD)
String encodedAuthToken = (String) credentials;
LOG.debug("Encoded auth token: " + encodedAuthToken);
byte[] authToken = B64Code.decode(encodedAuthToken);
GSSManager manager = GSSManager.getInstance();
try {
Oid krb5Oid = new Oid("1.3.6.1.5.5.2");
GSSName gssName = manager.createName(_targetName, null);
GSSCredential serverCreds = manager.createCredential(gssName, GSSCredential.INDEFINITE_LIFETIME, krb5Oid, GSSCredential.INITIATE_AND_ACCEPT);
GSSContext gContext = manager.createContext(serverCreds);
if (gContext != null) {
while (!gContext.isEstablished()) {
authToken = gContext.acceptSecContext(authToken, 0, authToken.length);
}
if (gContext.isEstablished()) {
// Login succeeded!
String clientName = gContext.getSrcName().toString();
}
}
}
인증은 잘 작동하지만 우리는 또한 제한된 위임을 사용하여, 백엔드 서비스 (교환 EWS)에 대한 사용자 자격 증명을 위임 할 필요가있다. AD에서 이것을 구성 할 때 약간의 차이가 있지만 보이지는 않습니다. 참조 : AD delegation settings
을 차이는 여기에 설명되어 있습니다 : 제한되지 않는 위임으로 우리는 단순히 사용 가능한 위임 된 자격 증명을 사용할 수 msdn.microsoft.com/en-us/library/cc246080.aspx?f=255 & MSPPError = -2147217396 우리는 백 엔드 서비스를 호출 할 때 모든 좋은 것 : 제한 위임으로
GSSCredential delegatedCreds = gContext.getDelegCred()
SpnegoHttpURLConnection conn = new SpnegoHttpURLConnection(clientCreds);
우리는 사용자의 TGT에 액세스 할 수 없습니다 우리가 MS-SFU (S4U2proxy)에서 Kerberos 확장을 사용할 필요가 보인다 Java 8이 지원한다고 가정합니다. https://github.com/ymartin59/java-kerberos-sfudemo
내 문제가 생겼습니다 ... 인증 후 기본적으로 인증 된 사용자의 사용자 이름으로 끝납니다 ("clientName"참조). 위의 코드 참조).
여기에 사용자를 가장하기 위해 S4U2self 메커니즘을 실제로 사용해야합니까? 클라이언트가 Kerberos 서비스 티켓 (디코딩 할 수없는 SPNEGO 토큰으로 싸여 있음)을 보내 왔습니다. 이상적으로 우리는 S4U2proxy 메커니즘을 사용하여 사용자를 인증하기 위해 해당 서비스 티켓과 자체 서비스의 TGT를 사용할 수 있어야합니다. 하지만 어떻게 이해가되지 않습니다.
그렇다면 SPNEGO 인증을 S4U2proxy 위임과 함께 사용할 수 있는지 궁금합니다.
이 정보를 입력 해 주셔서 감사합니다.
안녕하세요. 그냥 당신의 질문을 찾으십시오. 기록을 위해 여기에 S4U2Proxy와 관련된 질문이 있습니다 https://stackoverflow.com/questions/31051468/using-java-8-s4u2proxy-a-good-example-needed하지만 올바른 위임을 위장 할 필요가 전혀 없습니다 –