Я пытаюсь использовать S4U2Proxy, представленный на Java 8. К сожалению, мне не удалось найти много примеров. Мое требование заключается в том, что клиент отправит свой сертификат. Затем я должен делегировать (используя kerberos) его запрос, подключаться к KDC, получать TGT, получать билет на услугу, чтобы связаться с другим сервером от имени пользователя, а затем, наконец, связаться с фактическим сервисом, предоставив билет на обслуживание. Если java 8 не обеспечивает чистый подход, можете ли вы указать мне другие утилиты, которые могут решить мои требования.Использование Java 8 S4U2Proxy - нужен хороший пример
Subject.doAs(subject, new PrivilegedAction<Object>() {
@Override
public Object run() {
GSSManager manager = GSSManager.getInstance();
GSSCredential self = null;
try {
GSSName selfUser = manager.createName("serviceWhoWantstoImpersonate", GSSName.NT_USER_NAME);
Oid krb5Oid = new Oid("1.2.840.113554.1.2.2");
self = manager.createCredential(selfUser.canonicalize(krb5Oid), GSSCredential.DEFAULT_LIFETIME, krb5Oid, GSSCredential.INITIATE_ONLY);
GSSName user = manager.createName(clientName, GSSName.NT_USER_NAME);
GSSCredential impCred = ((ExtendedGSSCredential) self).impersonate(user);
} catch (GSSException e) {
e.printStackTrace();
}
return null;
}
});
Очевидно, что будут вопросы о том, как SPN был установлен в KDC? Разрешена ли учетная запись службы для делегирования? Был ли назначен SPN для этой учетной записи службы? Когда пользователь «обезьяна» отрицает всякую делегацию? и т. д. Сейчас я чувствую, что внес правильные настройки в KDC. Моя проблема заключается в том, что это происходит еще до того, как она попадает в KDC. Любые действительные входы помогут.
EDIT: После некоторого повторного поиска я смог выполнить S4u2self и s4u2proxy с помощью java 8. Surpised, что по крайней мере один пример должен был быть предоставлен документацией Oracle. Во всяком случае, я сейчас перехожу к следующему этапу. Теперь еще один сценарий, который я должен обработать, - это делегирование сертификата междоменного kerberos. Из документации java 8, которую я видел до сих пор, она указывает, что в настоящее время межрежим не поддерживается. Это правда?
Каждый имеет какой-либо решения? – Nischit
Можно ли получить ответ с помощью фрагмента кода? –