2 Stimmen

BizTalk löst den SSO-Fehler "Ticket kann nicht eingelöst werden, da kein Ticket in der Nachricht vorhanden ist"

Ich verwende den Oracle-Adapter aus dem BizTalk Adapter Pack (WCF-basiert für BTS 2006 R2). In der Konfiguration der "Solicit-Response"-Sendeports habe ich den Oracle-Benutzernamen und das Kennwort für die Verbindung mit der Datenbank verwendet.

Jetzt möchte ich das ändern und das SSO verwenden. Bisher habe ich die Affiliate-Anwendung erstellt und die "Benutzer-ID" der BTS-Host-Instanz den Benutzerdaten der Oracle-Datenbank zugeordnet.

Wenn ich die Anwendung ausführe, erhalte ich ständig die Fehlermeldung: "Ticket kann nicht eingelöst werden, in der Nachricht ist kein Ticket vorhanden".

Beim Durchlesen der BTS-Dokumentation habe ich unter "ms-help://MS.BTS.2006/BTS06CoreDocs/html/c7bf755c-c37d-4b19-9817-a7f42e1e9656.htm" Folgendes gefunden: In Szenarien, in denen eine Orchestrierung den Sendeadapter aufruft, sendet die BizTalk Messaging Engine die Nachricht an die MessageBox-Datenbank. Die Orchestrierung sollte sicherstellen, dass sowohl die SSOTicket Kontexteigenschaft und die Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID Kontexteigenschaft der Nachricht, die das Ticket enthält, beibehalten werden. Wenn der Adapter diese Nachricht von der MessageBox-Datenbank empfängt, ruft er die RedeemTicket-Methode mit dem verschlüsselten Ticket auf, um die Backend-Zugangsdaten aus dem SSO-Speicher abzurufen. Der Benutzer, der die Orchestrierung entwirft, sollte diese Eigenschaft speziell in die Nachricht kopieren.

Aber ich erhalte eine Nachricht über die integrierte SQL-Verbindung, die kein SSO-Ticket hat.

Bitte helfen Sie uns, dieses Problem zu lösen?

0 Stimmen

Ich weiß nicht, ob das helfen wird: BizTalk SSO-Konfigurationsdaten-Speicherungstool seroter.wordpress.com/2007/09/21/ oder etwas von Codeplex codeplex.com/Projekt/

4voto

Sam Punkte 4664

Sie können ein SSO-Ticket in einer benutzerdefinierten Pipeline-Komponente am Sendeport hinzufügen. Der folgende Code funktioniert bei mir:

    public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
    {
        ISSOTicket ssoTicket = new ISSOTicket();
        pInMsg.Context.Write("SSOTicket", "http://schemas.microsoft.com/BizTalk/2003/system-properties", ssoTicket.IssueTicket(0));
        return pInMsg;
    }

Dadurch wird ein Ticket für das Biztalk-Hostinstanz-Servicekonto erstellt, so dass die Zuordnung Ihrer Oracle-Partneranwendung wie erwartet funktionieren sollte.

0 Stimmen

Wenn Sie keine eigene benutzerdefinierte Pipeline schreiben möchten, können Sie auch das BRE Pipeline Framework verwenden und eine BRE-Regel SSO-Ticket erstellen verwenden.

0voto

Möglicherweise müssen Sie in den Systemeigenschaften im SSO-Administrator die Option "Tickets zulassen" aktivieren. Ohne diese Einstellung wird es nicht funktionieren, selbst wenn Sie Tickets für die Partneranwendung zulassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X