SSO-Unterstützung für Empfangsadapter
Einmaliges Anmelden für Unternehmen (SSO) stellt Dienste zum Speichern und Übertragen verschlüsselter Benutzeranmeldeinformationen über die lokalen Grenzen sowie Netzwerk- und Domänengrenzen hinweg bereit. Für den Umgang mit den Benutzeranmeldeinformationen, mit denen ein Transportadapter auf Back-End-Anwendungen zugreift, können Entwickler von Transportadaptern die SSO-APIs verwenden.
Transportadapter, die kein SSO unterstützen, müssen normalerweise mit einem einzigen Satz von Anmeldeinformationen konfiguriert werden, mit dem sie auf Back-End-Anwendungen zugreifen. Bei vielen Back-End-Systemen erfüllt die Authentifizierung mit nur einem Konto möglicherweise nicht alle Sicherheitsanforderungen. Viele Anwendungen gewähren abhängig vom zugreifenden Benutzer verschiedene Zugriffsrechte. Mit SSO können Adapter die Anmeldeinformationen für den Endpunkt abhängig vom zugreifenden Benutzer dynamisch auswählen.
So verwenden Sie Empfangsadapter mit SSO
Bei Empfangsadaptern, die SSO unterstützen, werden nach dem Empfangen einer Nachricht und vor dem Veröffentlichen der Nachricht in BizTalk Server die folgenden Schritte ausgeführt:
Der Adapter nimmt die Identität des Absenders an und ruft das SSO-Ticket im Namen des Absenders mithilfe der ISSOTicket.IssueTicket-API ab.
Nach dem erfolgreichen Abrufen eines SSO-Tickets wird dieses vom Adapter in der Nachrichtenkontexteigenschaft SSOTicket unter dem Systemnamespace gespeichert.
Im folgenden Codefragment wird veranschaulicht, wie das Ticket abgerufen und im Nachrichtenkontext gespeichert wird.
public class MyAdapter : IBTTransport,
IBTTransportConfig,
IBTTransportControl,
IPersistPropertyBag,
IBaseComponent
{
...
private string m_SSOToken = null;
// Get a ticket for the sender
private void GetSSOTicket(IntPtr token)
{
bool impersonated = false;
WindowsImpersonationContext wic = null;
if (token != (IntPtr)0)
{
try
{
// Impersonate the user using his security
// token
WindowsIdentity wi =
new WindowsIdentity(token);
wic = wi.Impersonate();
impersonated = true;
// Get an SSO ticket for the impersonated
// user
ISSOTicket ssoTicket = new ISSOTicket();
m_SSOToken = ssoTicket.IssueTicket(0);
}
finally
{
if (impersonated)
// Revert the impersonation
wic.Undo();
}
}
}
...
private void WriteSSOTicketToContext(
IBaseMessage message )
{
if (m_SSOTicket != null)
{
// Write the SSO ticket to the message context
message.Context.Write(
“SSOTicket”,
http://schemas.microsoft.com/BizTalk/2003/system-properties,
m_SSOToken);
}
}
}
Auflösen der Partei
Die Pipelinekomponente zum Auflösen der Partei ist für das Zuordnen des Absenderzertifikats oder der Absender-Sicherheits-ID (SID) zu der entsprechenden konfigurierten BizTalk Server-Partei verantwortlich. Adapter, denen diese Informationen zur Verfügung stehen, sollten die beiden Systemnachrichtenkontexteigenschaften WindowsUser und SignatureCertificate festlegen, die von der Nachparteiauflösungskomponente verwendet werden sollen, wenn sie konfiguriert sind.
Die WindowsUser-Eigenschaft wird mit dem Domänenbenutzer des Absenders aufgefüllt, z. B. redmond\myBtsUser. Die SignatureCertificate-Eigenschaft wird mit dem Fingerabdruck des Clientauthentifizierungszertifikats aufgefüllt.
Verwalten von Kennwörtern
Wenn Sie Anmeldeinformationen direkt in den Eigenschaften eines Endpunkts setzen, wird das Kennwortfeld beim Exportieren einer Bindungsdatei zurückgesetzt. Deshalb muss der Benutzer das Kennwort als Administrator erneut eingeben. Diese Schwierigkeiten können Sie vermeiden, indem Sie für Anmeldeinformationen SSO verwenden.
Wenn der Adapterendpunkt über eine Password-Eigenschaft verfügt, beachten Sie, dass der tatsächliche Wert in Klartext in der SSO Configure Store-Datenbank gespeichert wird. auch wenn es in der Benutzeroberfläche als "*" angezeigt wird. Außerdem wird die Eigenschaft über das Netzwerk übertragen und kann von einem einfachen Skript mit dem BizTalk Server-Beispiel ExplorerOM gelesen werden.