Autenticación mediante proveedores de identidad SAML en ABBYY FlexiCapture 12
Autentique a los usuarios de ABBYY FlexiCapture 12 mediante un proveedor de identidad SAML: obtenga el dato SAML, envíelo mediante POST codificado en Base64 al Servidor de aplicaciones y use el ticket.
La autenticación SAML permite a los usuarios de ABBYY FlexiCapture 12 evitar enviar datos de identidad (como el nombre de usuario y la contraseña) al componente Application Server de FlexiCapture, ya que pueden autenticarse en un proveedor de identidad de terceros (por ejemplo, Google o Facebook) y, a continuación, enviar al Application Server los datos que confirman que la autenticación se ha realizado correctamente mediante un tercero de confianza.El proceso de autenticación SAML en una aplicación de usuario consta de los siguientes pasos:
Autenticarse en el proveedor de identidad de terceros
Obtener del proveedor de identidad de terceros los datos de autenticación SAML del usuario
Enviar los datos de autenticación SAML al Application Server
Recibir un ticket de autenticación del Application Server
Este ticket puede utilizarse posteriormente en las solicitudes al Application Server.
La cuenta de usuario debe existir en la base de datos de FlexiCapture y debe tener todos los permisos necesarios.
Para saber cómo obtener datos de autenticación de un proveedor de identidad de terceros, consulte la documentación de ese proveedor. Por ejemplo, OneLogin ofrece kits listos para usar para habilitar la autenticación SAML en varios lenguajes de programación.
Envío de datos SAML al Application Server de FlexiCapture 12
Codifique los datos SAML en Base64 y envíelos al Application Server mediante una solicitud POST a https://<Application Server>/Flexicapture12/Server/Saml. El nombre del campo que contiene los datos SAML debe ser SAMLResponse.publicstatic async Task sendSamlToServer( string samlData )
{
string serviceUrl = “https://<ApplicationServer>/Flexicapture12/Server/SAML”;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( serviceUrl );
request.Method = “POST”;var fields = new Dictionary<string, string>();
fields.Add( “SAMLResponse”, Convert.ToBase64String( Encoding.UTF8.GetBytes( samlData ) ) );
HttpClient client = new HttpClient();
FormUrlEncodedContent content = new FormUrlEncodedContent( fields );
HttpResponseMessage response = await client.PostAsync( serviceUrl, content );
if( response.StatusCode == HttpStatusCode.OK ) {
processServerResponse( response.Content.ToString() );
} else {
processServerError( response.StatusCode, response.Content.ToString() );
}
}Si usa un tenant, agregue el identificador del tenant a la URL del servidor; por ejemplo, https://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantNamePara que la autenticación funcione, debe haber un usuario registrado en el Application Server cuyo inicio de sesión coincida con el identificador de los datos SAML. El valor del campo /samlp:Response/saml:Assertion/saml:Subject/saml:NameID se usará como inicio de sesión.
El Application Server devolverá una respuesta como la siguiente:
El valor de la etiqueta <ticket> es el ticket de autenticación de FlexiCapture 12. Puede usar este ticket para realizar llamadas a todas las interfaces del Application Server que requieran autenticación. Las solicitudes a los servicios web de FlexiCapture deben realizarse mediante la autenticación de FlexiCapture (direcciones que comienzan por https://<ApplicationServer>/flexicapture12/Server/FCAuth/ o https://<ApplicationServer>/flexicapture12/Server/MobileApp/).
Puede enviar el ticket al servidor mediante un archivo de cookies (el archivo debe llamarse FlexiCaptureTmpPrn) o un encabezado Authorization: Bearer. Ejemplo:
Recomendamos usar el encabezado. Las cookies se admiten por compatibilidad con soluciones más antiguas.Si la autenticación se realiza correctamente, la respuesta del servidor contendrá un valor de ticket actualizado tanto en un archivo de cookies con el mismo inicio de sesión (FlexiCaptureTmpPrn) como en el encabezado AuthTicket. La siguiente solicitud debe realizarse con el ticket actualizado (los tickets caducan después de cierto tiempo).
Configuración de un certificado de confianza en el Application Server
El Application Server comprobará los datos recibidos del proveedor de identidad. Para que el Application Server confíe en estos datos, deben estar firmados con un certificado personalizado emitido por una autoridad incluida en la base de datos de autoridades de confianza del Application Server.Importe el certificado en la base de datos de ABBYY FlexiCapture. A partir de ese momento, los datos se comprobarán con este certificado. Para obtener más información, consulte Configuración de Single Sign-On.Si la comprobación falla, el Application Server consultará el parámetro AllowMixedModeCertificateValidation en la configuración <appSettings> del archivo Web.config. Si este parámetro está establecido en true, la comprobación se realizará con el certificado agregado a la carpeta Trusted Root Certification Authorities del almacén de certificados Equipo local del equipo en el que se ejecuta el Application Server.Si no se agregan certificados a la base de datos, la comprobación se realizará con el certificado ubicado en la carpeta Trusted Root Certification Authorities, y el parámetro AllowMixedModeCertificateValidation se ignorará.Descargue el proyecto y los materiales complementarios:SAML_Example.zip