Condividi tramite


Supporto SSO per gli adapter di ricezione

Enterprise Single Sign-On (SSO) fornisce servizi per archiviare e trasmettere le credenziali utente crittografate oltre i limiti locali, di rete e di dominio. Chi scrive adapter di trasporto può sfruttare le API SSO per gestire le credenziali utente utilizzate da un adapter di trasporto per accedere alle applicazioni back-end.

Gli adapter di trasporto che non supportano SSO devono in genere essere configurati con una sola serie di credenziali utilizzate per accedere alle applicazioni back-end. Per molti sistemi back-end, l'autenticazione di un singolo account può non soddisfare tutti i requisiti di sicurezza. Molte applicazioni forniscono diritti di accesso diversi a seconda dell'utente che vi accede. SSO consente agli adapter di scegliere dinamicamente le credenziali da utilizzare per l'endpoint in base all'utente che tenta di eseguire l'accesso.

Funzionamento degli adapter di ricezione con SSO

Gli adapter di ricezione che supportano SSO eseguono i passaggi seguenti dopo la ricezione di un messaggio e prima della pubblicazione dello stesso in BizTalk Server:

  1. L'adapter rappresenta il mittente e ottiene il ticket SSO per conto del mittente usando l'API ISSOTicket.IssueTicket .

  2. Dopo aver ottenuto un ticket SSO, l'adapter lo memorizza nella proprietà di contesto del messaggio "SSOTicket" nello spazio dei nomi di sistema.

    Nel frammento di codice seguente viene illustrato come un ticket viene ottenuto e memorizzato nel contesto del messaggio.

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

Risoluzione entità

Il componente della pipeline di risoluzione entità è responsabile del mapping del certificato del mittente o dell'ID di sicurezza del mittente (SID, Security ID) all'entità BizTalk Server configurata corrispondente. Gli adattatori che dispongono di queste informazioni devono impostare le due proprietà del contesto del messaggio di sistema, WindowsUser e SignatureCertificate, da utilizzare dal componente di risoluzione delle entità downstream, se configurato.

La proprietà WindowsUser viene popolata con l'utente di dominio del mittente, ad esempio redmond\myBtsUser. La proprietà SignatureCertificate viene popolata con l'identificazione personale del certificato di autenticazione client.

Gestione delle password

Se si inseriscono credenziali direttamente nelle proprietà di un endpoint, il campo password verrà visualizzato come vuoto quando sarà necessario esportare un file di associazione. L'utente dovrà quindi reimmettere la password come amministratore. È possibile evitare questa difficoltà utilizzando SSO per le credenziali.

Se l'endpoint dell'adattatore ha una proprietà Password , tenere presente che il valore effettivo viene archiviato in testo non crittografato nel database di configurazione dell'archivio SSO. nonostante venga visualizzato nell'interfaccia utente come "*". Questa proprietà viene inoltre trasferita attraverso la rete e può essere letta da un semplice script che utilizza l'esempio di BizTalk Server ExplorerOM.