Использование Java 8 S4U2Proxy - нужен хороший пример

Я пытаюсь использовать S4U2Proxy, представленный в Java 8. К сожалению, мне не удалось найти эти многочисленные примеры. Мое требование - клиент отправит свой сертификат. Затем я должен делегировать (используя kerberos) его запрос, подключиться к KDC, получить TGT, получить билет службы, чтобы связаться с другим сервером от имени пользователя, а затем, наконец, связаться с реальной службой, предоставив билет службы. Если Java 8 не обеспечивает чистый подход, можете ли вы указать мне другие утилиты, которые могут решить мое требование.

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. Любые действительные входные данные помогут.

РЕДАКТИРОВАТЬ: После некоторого исследования я смог выполнить S4u2self и s4u2proxy с использованием Java 8. Удивительно, что хотя бы один пример должен был быть предоставлен в документации Oracle. Во всяком случае, я сейчас перехожу к следующему этапу. Теперь еще один сценарий, который мне нужно обработать, - это междоменное делегирование сертификата Kerberos. Из документации java 8, которую я видел до сих пор, следует, что в настоящее время кросс-область не поддерживается. Это все еще правда?

Ответы на вопрос(1)

Ваш ответ на вопрос