Authentification à l’aide de fournisseurs d’identité SAML dans ABBYY FlexiCapture 12
Authentifier les utilisateurs d’ABBYY FlexiCapture 12 via un fournisseur d’identité SAML : récupérer les données SAML, les envoyer au serveur d’applications encodées en Base64 via POST, puis utiliser le ticket.
L’authentification SAML permet aux utilisateurs d’ABBYY FlexiCapture 12 d’éviter d’envoyer des données d’identité (telles qu’un nom d’utilisateur et un mot de passe) au composant Application Server de FlexiCapture en s’authentifiant auprès d’un fournisseur d’identité tiers (par ex. Google ou Facebook), puis en transmettant à l’Application Server les données confirmant le succès de l’authentification par ce tiers de confiance.Le processus d’authentification SAML dans une application utilisateur comprend les étapes suivantes :
S’authentifier auprès du fournisseur d’identité tiers
Récupérer les données d’authentification SAML de l’utilisateur auprès du fournisseur d’identité tiers
Envoyer les données d’authentification SAML à l’Application Server
Recevoir un ticket d’authentification de l’Application Server
Ce ticket peut ensuite être utilisé dans des requêtes adressées à l’Application Server.
Le compte utilisateur doit exister dans la base de données FlexiCapture et disposer de toutes les autorisations requises.
Pour savoir comment obtenir des données d’authentification auprès d’un fournisseur d’identité tiers, consultez la documentation de ce fournisseur. Par exemple, OneLogin propose des toolkits prêts à l’emploi pour activer l’authentification SAML dans plusieurs langages de programmation.
Envoi des données SAML au Application Server FlexiCapture 12
Encodez les données SAML en Base64 et envoyez-les au Application Server en effectuant une requête POST à l’adresse https://<Application Server>/Flexicapture12/Server/Saml. Le nom du champ contenant les données SAML doit être 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 vous utilisez un tenant, ajoutez son identifiant à l’URL du serveur, par exemple https://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantNamePour que l’authentification fonctionne, un utilisateur dont le nom d’utilisateur correspond à l’identifiant contenu dans les données SAML doit être enregistré sur le Application Server. La valeur du champ /samlp:Response/saml:Assertion/saml:Subject/saml:NameID sera utilisée comme nom d’utilisateur.
Le Application Server renverra une réponse semblable à celle ci-dessous :
La valeur de la balise <ticket> correspond au ticket d’authentification FlexiCapture 12. Vous pouvez utiliser ce ticket pour appeler toutes les interfaces du Application Server qui nécessitent une authentification. Les requêtes vers les services web FlexiCapture doivent être effectuées à l’aide de l’authentification FlexiCapture (adresses commençant par https://<ApplicationServer>/flexicapture12/Server/FCAuth/ ou https://<ApplicationServer>/flexicapture12/Server/MobileApp/).
Vous pouvez transmettre le ticket au serveur au moyen d’un fichier de cookies (le fichier doit être nommé FlexiCaptureTmpPrn) ou d’un en-tête Authorization: Bearer. Exemple :
Nous recommandons d’utiliser l’en-tête. Les cookies sont pris en charge pour assurer la compatibilité avec les anciennes solutions.Si l’authentification réussit, la réponse du serveur contiendra une valeur de ticket mise à jour, à la fois dans un cookie associé au même identifiant de connexion (FlexiCaptureTmpPrn) et dans l’en-tête AuthTicket. La requête suivante doit être effectuée à l’aide du ticket mis à jour (les tickets expirent au bout d’un certain temps).
Configuration d’un certificat de confiance sur l’Application Server
L’Application Server vérifiera les données reçues du fournisseur d’identité. Pour que l’Application Server fasse confiance à ces données, elles doivent être signées avec un certificat personnalisé émis par une autorité figurant dans la base de données des autorités de confiance de l’Application Server.Importez le certificat dans la base de données ABBYY FlexiCapture. Les données seront désormais vérifiées à l’aide de ce certificat. Pour plus d’informations, voir Setting up Single Sign-On.Si la vérification échoue, l’Application Server s’appuiera sur le paramètre AllowMixedModeCertificateValidation des paramètres <appSettings> du fichier Web.config. Si ce paramètre est défini sur true, la vérification sera effectuée à l’aide du certificat ajouté au dossier Trusted Root Certification Authorities du magasin de certificats Ordinateur local sur l’ordinateur exécutant l’Application Server.Si aucun certificat n’est ajouté à la base de données, la vérification sera effectuée à l’aide du certificat situé dans le dossier Trusted Root Certification Authorities, et le paramètre AllowMixedModeCertificateValidation sera ignoré.Téléchargez le projet et les éléments associés :SAML_Example.zip