SpNego: обнаружен дефектный токен

У меня есть клиент Java, подключающийся к службе WCF. Эта служба настроена для запуска на хосте как отдельный пользователь домена (т.е. не как локальная служба или сетевая служба). Сервис публикует userPrincipalName в своем WSDL.

Во время обмена токенами SpNego я получаю в клиенте следующее исключение

Defective token detected (Mechanism level: AP_REP token id does not match!)
This is the call stack:
    at sun.security.jgss.spnego.SpNegoContext.initSecContext(SpNegoContext.java:450)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:230)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:162)

Если я настраиваю службу WCF для запуска под локальной системной учетной записью, обмен токенами SpNego работает. Нужно ли изменять код для служб, которые не работают под локальной системной учетной записью?

Update-1

После некоторой отладки, когда клиент C# подключался к службе WCF, я обнаружил, что клиент C# использует модифицированную версию протокола SpNego под названием MS-SPNG. Java 6 поддерживает это? При проверке токена появляется ошибка о неподдерживаемом механизме 1.2.840.113554.1.2.2.3.

1 ответ

Эти ссылки объясняют, что происходит. У MS есть расширение для протокола SpNego, которое включается, когда мы запускаем службу WCF как пользователь (т.е. не как локальная служба и т. Д.). Это спецификация MS для нового протокола, а вот документ openjdk, в котором описаны обходные пути.

Другие вопросы по тегам