У меня есть веб-приложение, которое использует Keycloak / OpenID Connect для аутентификации пользователя в Windows AD.
Пользователи не будут использовать браузер на рабочей станции в домене Windows AD.
Сервер веб-приложений (Tomcat с адаптером Keycloak) работает в домене Windows AD.
Веб-приложение настроено для подключения Keycloak / OpenID.Область Keycloak настроена на использование Windows AD Kerberos / LDAP.
Браузер пользователя пересылает данные для входа в Keycloak и после успешного входа переходит обратно в веб-приложение.
Требуется веб-приложениедля подключения к IBM i с использованием билета Kerberos / учетных данных GSS IBM i настроен на SSO / EIM с помощью Windows AD.Это работает.
Я настроил клиент Keycloak для пересылки учетных данных GSS.
Я пытаюсь получить учетные данные GSS из запроса сервлета с помощью клиента Keycloak
// Obtain accessToken in your application.
KeycloakPrincipal<KeycloakSecurityContext> kcp = (KeycloakPrincipal<KeycloakSecurityContext>)request.getUserPrincipal();
AccessToken at = kcp.getKeycloakSecurityContext().getToken();
String username = at.getPreferredUsername();
wtr.append("Windows User: ").append(username).append(newLine);
// Retrieve kerberos credential from accessToken and deserialize it
Map<String, Object> otherClaims = at.getOtherClaims();
Object otherClaim = otherClaims.get(KerberosConstants.GSS_DELEGATION_CREDENTIAL);
String serializedGSSCred = (String) otherClaim;
GSSCredential gssCredential = KerberosSerializationUtils.deserializeCredential(serializedGSSCred);
.Карта otherClaims пуста.Таким образом, десериализация создает исключение нулевого указателя с сообщением
org.keycloak.common.util.KerberosSerializationUtils$KerberosSerializationException: Null credential given as input. Did you enable kerberos credential delegation for your web browser and mapping of gss credential to access token?, Java version: 1.8.0_152, runtime version: 1.8.0_152-b16, vendor: Oracle Corporation, os: 6.2
at org.keycloak.common.util.KerberosSerializationUtils.deserializeCredential(KerberosSerializationUtils.java:70)
Чего мне не хватает?