Frage

Ich versuche, einen Client für das Konsumieren von DFS (Documentum Foundation Services) zu schreiben und zu versuchen, die Verwendung von Kerberos für Single Sign-On. Sowohl Java und C # Beispielcode (Produktivität Schicht) in der Dokumentation gibt die folgende Zeile, die die Kerberos erhält binäre Token:

  

byte [] Ticket = ...

Ich bin nicht sicher, wie man tatsächlich bekommen die binäre Token und die „...“ hilft mir nicht. Wer weiß, wie ein tatsächliches Ticket (Kerberos-Token) unter Verwendung von Java oder C # zu bekommen?

Hier sind die angegebenen Beispiele sowohl für Java und C #:

Java: Das Aufrufen eines Dienstes mit der Kerberos-Authentifizierung

KerberosTokenHandler handler = new KerberosTokenHandler();
IObjectService service = ServiceFactory
.getInstance().getRemoteService(..., contextRoot, Arrays.asList((Handler) handler));
byte[] ticket = ...;
handler.setBinarySecurityToken(
new KerberosBinarySecurityToken(ticket, KerberosValueType.KERBEROSV5_AP_REQ));
service.create(...)

C #: einen Dienst mit Kerberos-Authentifizierung aufrufen

KerberosTokenHandler handler = new KerberosTokenHandler();
List<IEndpointBehavior> handlers = new List<IEndpointBehavior>();
handlers.Add(handler);
IObjectService service = ServiceFactory
.Instance.GetRemoteService<IObjectService>(..., contextRoot, handlers);
byte[] ticket = ...;
handler.SetBinarySecurityToken(
new KerberosBinarySecurityToken(ticket, KerberosValueType.GSS_KERBEROSV5_AP_REQ));
service.create(...);
War es hilfreich?

Lösung

Ich dachte nur diese aus für .NET und würde für diejenigen zu teilen möchten, die vielleicht interessiert. Was benötigt wird, ist WSE3 Bibliothek. Stellen Sie sicher, dass die DFS-Dienstkonto für Kerberos-Delegierung konfigurieren.

Also, was tun müssen, ist Ihre KerberosTokenHandler mit dem Kerberos-Token gesetzt. Die KerberosBinarySecurityToken stammt aus WSE3. Der Code würde wie folgt aussehen:

KerberosTokenHandler kerberosTokenHandler = new KerberosTokenHandler();

String servicePrincipalName = “DFS/example66”;  // this is the service principal name for your DFS service account in Active Directory.
using (KerberosClientContext kerberosClientContext = new KerberosClientContext(servicePrincipalName, true, ImpersonationLevel.Delegation))
{
      KerberosBinarySecurityToken token = new KerberosBinarySecurityToken(kerberosClientContext.InitializeContext(), KerberosValueType.KERBEROSV5_AP_REQ);
      kerberosTokenHandlerandler.SetBinarySecurityToken(token);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top