Authentification dans ABBYY FlexiCapture 12 à l'aide des fournisseurs d'identité SAML 2.0

Présentation du processus d'authentification

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 du serveur d'application de FlexiCapture en s'authentifiant auprès d'un fournisseur d'identité tiers (par ex., Google ou Facebook), puis en transmettant au serveur d'application les données relatives à l'authentification réussie par un tiers de confiance.

Le processus d'authentification SAML sur une application de l'utilisateur se déroule selon les étapes suivantes :

  •  authentification par un fournisseur d'identité tiers
  •  obtention des données d'authentification SAML de l'utilisateur auprès du fournisseur d'identité tiers
  •  envoi des données d'authentification SAML au serveur d'application
  •  réception d'un ticket authentifié du serveur d'application

Ce ticket peut ensuite être utilisé dans les requêtes adressées au serveur d'application.

Remarque : le compte d'utilisateur doit exister dans la base de données FlexiCapture et doit disposer de toutes les autorisations requises.

Implémentation

Obtention des données SAML

Les données SAML du fournisseur d'identité tiers sont formatées comme suit (cet exemple est issu de OneLogin) :

Pour plus de détails sur la méthode d'obtention de données d'authentification auprès d'un fournisseur d'identité tiers, consultez la documentation du fournisseur d'identité. Par exemple, OneLogin propose des kits de développement prêts à être utilisés pour l'activation de l'authentification SAML dans plusieurs langues de programmation.

Envoi des données SAML vers le serveur d'application FlexiCapture 12

Encodez les données SAML dans Base64 et envoyez-les au serveur d'application en faisant une demande POST à l'adresse : http://<Application Server>/Flexicapture12/Server/Saml. Nommez le champ contenant les données SAML « SAMLResponse ».

   publicstaticasyncTasksendSamlToServer(stringsamlData)
   {    
       stringserviceUrl="http://<ApplicationServer>/Flexicapture12/Server/SAML";
       HttpWebRequest request=(HttpWebRequest)WebRequest.Create(serviceUrl);
       request.Method="POST";

       varfields=newDictionary<string,string>();
       fields.Add("SAMLResponse",Convert.ToBase64String(Encoding.Default.GetBytes(samlData)));
           HttpClientclient=newHttpClient();
       FormUrlEncodedContentcontent=newFormUrlEncodedContent(fields);
       HttpResponseMessageresponse=awaitclient.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 l'identificateur du tenant à l'URL du serveur, par ex., http://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantName

Afin que l'authentification soit effective, l'utilisateur avec un identifiant de connexion correspondant à l'identificateur dans les données SAML (incluses dans la balise <saml:NameID>) doit être enregistré sur le serveur d'application.

La réponse du serveur d'application sera identique à celle ci-dessous :

La valeur figurant dans la balise <ticket> est le ticket authentifié pour ABBYY FlexiCapture 12. Vous pouvez utiliser ce ticket pour lancer des appels à toutes les interfaces du serveur d'application qui nécessitent une authentification. Les demandes adressées aux services Web FlexiCapture doivent être faites en utilisant l'authentification FlexiCapture (adresses commençant par http://<ApplicationServer>/flexicapture12/Server/FCAuth/ ou http://<ApplicationServer>/flexicapture12/Server/MobileApp/.

Utilisation du ticket authentifié pour FC 12

Vous pouvez transmettre le ticket au serveur en utilisant un fichier cookie (le fichier doit être nommé FlexiCaptureTmpPrn) ou une autorisation : Bearer en en-tête. Exemple :

Autorisation : Bearer 82BD00C6601EB7F8EF4265450F934D4103C5CA2F010DE1C5FAB4CC830A82300C743D09E5477279733F283D0B6E1C93ACC30FE353D4D9396649965432AAA7994078C3CC63567A95A35E03DA6FDE020F57
    

Nous recommandons l'utilisation de l'en-tête. Les cookies sont pris en charge pour préserver la compatibilité avec les anciennes solutions.

La réussite de l'authentification se soldera par une réponse du serveur contenant une valeur de ticket actualisée, à la fois dans un fichier cookie avec le même identifiant (FlexiCaptureTmpPrn) et dans l'en-tête AuthTicket. Lors de la demande suivante, le ticket mis à jour doit être utilisé (les tickets expirent après un certain temps).

Configuration d'un certificat sécurisé sur le serveur d'application

Le serveur d'application vérifiera les données reçues du fournisseur d'identité. Afin que le serveur d'application puisse se fier à ces données, elles doivent être signées avec un certificat personnalisé délivré par une autorité de la base de données du serveur d'application des autorités de confiance.

Importation du 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, consultez Configuration de l'authentification unique (Single Sign-On).

En cas d'échec de la vérification, le serveur d'application renverra au paramètre AllowMixedModeCertificateValidation dans les 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é dans le dossier Autorités de certification racine approuvées dans le magasin de certificats de l'ordinateur local pour l'ordinateur qui exécute le serveur d'application.

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 Autorités de certification racine approuvées et le paramètre AllowMixedModeCertificateValidation sera ignoré.

Téléchargez le projet et les documents d'accompagnement : SAML_Example.zip

10.11.2020 12:08:04


Please leave your feedback about this article