У меня есть клиент 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.