Mit Java 8 S4U2Proxy - Ein gutes Beispiel

Ich versuche, S4U2Proxy zu verwenden, das in Java 8 eingeführt wurde. Leider konnte ich diese vielen Beispiele nicht finden. Meine Anforderung ist, dass der Kunde sein Zertifikat sendet. Ich sollte dann seine Anfrage delegieren (mithilfe von Kerberos), eine Verbindung zum KDC herstellen, das TGT abrufen, das Serviceticket anfordern, um im Namen des Benutzers einen anderen Server zu kontaktieren, und schließlich den tatsächlichen Service durch Bereitstellung des Servicetickets kontaktieren. Wenn Java 8 keinen sauberen Ansatz bietet, können Sie mich auf andere Dienstprogramme verweisen, die meine Anforderung möglicherweise lösen.

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;
        }
    });

Offensichtlich wird es Fragen dazu geben, wie der SPN im KDC eingestellt wurde? Ob dieses Dienstkonto für die Delegierung autorisiert ist? Wurde diesem Dienstkonto der richtige SPN zugewiesen? Wenn der Benutzer "Affe" jede Art von Delegierung verweigert? usw usw Im Moment habe ich das Gefühl, die richtigen Einstellungen in KDC vorgenommen zu haben. Mein Problem ist, dass das oben genannte Problem auftritt, noch bevor es das KDC erreicht. Alle gültigen Eingaben helfen.

EDIT: Nach einigen Nachforschungen konnte ich S4u2self und s4u2proxy mit Java 8 ausführen. Es hat mich überrascht, dass mindestens ein Beispiel aus der Oracle-Dokumentation stammen sollte. Wie auch immer, ich gehe jetzt zur nächsten Stufe über. Ein weiteres Szenario, mit dem ich umgehen muss, ist die domänenübergreifende Kerberos-Zertifikatsdelegierung. Aus der Java 8-Dokumentation, die ich bisher gesehen habe, geht hervor, dass derzeit keine Unterstützung für den bereichsübergreifenden Zugriff besteht. Stimmt es noch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage