Compatibilidad de SSO para adaptadores de recepción
El inicio de sesión único (SSO) empresarial proporciona servicios para almacenar y transmitir credenciales de usuario cifradas a través de los límites locales, de red y de dominio. Los escritores del adaptador de transporte pueden aprovechar las API de SSO para controlar las credenciales de usuario que un adaptador de transporte usa para tener acceso a las aplicaciones de servidor.
Suele ser necesario configurar los adaptadores de transporte que no son compatibles con SSO con un conjunto único de credenciales que usen para tener acceso a aplicaciones de servidor. Para muchos sistemas de servidor, es posible que la autenticación de cuenta única no satisfaga todas las exigencias de seguridad. Muchas aplicaciones proporcionan diferentes derechos de acceso en función del usuario que tenga acceso a ellas. SSO permite que los adaptadores elijan de forma dinámica las credenciales que van a usar para el extremo según el usuario que esté intentando tener acceso a él.
Cómo funcionan los adaptadores de recepción con SSO
Los adaptadores de recepción compatibles con SSO realizan los pasos siguientes después de recibir un mensaje y antes de publicarlo en BizTalk Server:
El adaptador suplanta al remitente y obtiene el vale de SSO en nombre del remitente mediante la API ISSOTicket.IssueTicket .
Después de obtener correctamente un vale de SSO, el adaptador lo almacena en la propiedad de contexto del mensaje “SSOTicket” en el espacio de nombres del sistema.
El fragmento de código siguiente muestra cómo se obtiene el vale y cómo se almacena en el contexto del mensaje.
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);
}
}
}
Resolución de entidades
La misión del componente de canalización de resolución de entidades consiste en asignar el certificado de remitente o el identificador de seguridad de remitente (SID) a la correspondiente entidad de BizTalk Server configurada. Los adaptadores que tienen esta información disponible para ellos deben establecer las dos propiedades de contexto de mensaje del sistema, WindowsUser y SignatureCertificate, que el componente de resolución de entidad de bajada usará si está configurado.
La propiedad WindowsUser se rellena con el usuario de dominio del remitente, por ejemplo redmond\myBtsUser. La propiedad SignatureCertificate se rellena con la huella digital del certificado de autenticación de cliente.
Administrar contraseñas
Si coloca las credenciales directamente en las propiedades de un extremo, el campo de contraseña estará en blanco cuando necesite exportar un archivo de enlace. Por ello, el usuario deberá volver a escribir la contraseña como administrador. Para evitar este contratiempo, use SSO para las credenciales.
Si el punto de conexión del adaptador tiene una propiedad Password , tenga en cuenta que el valor real se almacena en texto no cifrado en la base de datos de configuración del almacén de SSO. Esto es así a pesar de que en la interfaz de usuario se muestra como "*". Esta propiedad también se transfiere a través de la red y una secuencia de comandos sencilla mediante el ejemplo de BizTalk Server que ExplorerOM podrá leer.