Authentification à l'aide des jetons web JSON
Présentation du processus d'authentification
JSON Web Token (JWT) est un format de transfert de données utilisé pour le transfert sécurisé de données entre le serveur d'application ABBYY FlexiCapture 12 et des services tiers. Lors de l'authentification par JWT, aucune donnée d'identification n'est envoyée au serveur d'application. L'authentification est effectuée par un service tiers. Le serveur d'application est ensuite informé que l'utilisateur a été authentifié par un service de confiance.
Implémentation
Obtention des données JSON
Exemple de données JSON :
{"alg":"RS256","kid":"-JLCtyyTyF69AZrtjpk-xGs-nUE","x5t":"-JLCtyyTyF69AZrtjpk-xGs-nUE","typ":"JWT"}.
{"nameid":"user","nbf":1572267172,"exp":1572267772,"iss":"ABBYY","aud":"test JWT app"}
Les données JSON contenant des certificats d'utilisateur sont cryptées en Base64 en vue de la création d'un jeton Web JSON (JWT).
L'exemple de demande suivant crée un jeton JWT :
Envoi d'un JWT vers le serveur d'application
Un JWT doit être envoyé au serveur d'application en utilisant l'URL suivante : https://<ApplicationServer>/Flexicapture12/Server/jwt. Cela se fait par le biais d'une demande ULTÉRIEURE.
Remarque : Si vous utilisez un tenant, ajoutez l'identificateur du tenant à l'URL du serveur d'applivation : https://<ApplicationServer>/Flexicapture12/Server/jwt?Tenant=MyTenantName
static async Task<string> AuthenticateByJwtAsync( string jwtToken )
{
var fields = new Dictionary<string, string>
{
{ "JwtToken", jwtToken }
} ;
FormUrlEncodedContent content = new FormUrlEncodedContent( fields ) ;
using ( var client = new HttpClient() )
{
HttpResponseMessage response = await client.PostAsync( jwtServiceUrl, content ) ;
if ( response.StatusCode == HttpStatusCode.OK )
{
return response.Headers.GetValues( "AuthTicket" )?.First() ?? throw new Exception( "AuthTicket header not found" ) ;
}
else
{
throw new Exception( await response.Content.ReadAsStringAsync() ) ;
}
}
}
Afin que l'authentification soit effective, l'utilisateur avec un identifiant de connexion correspondant à l'identificateur dans le JWT (inclus dans la valeur du nœud 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 le champ 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. Il convient d'accéder aux services en utilisant l'authentification ABBYY FlexiCapture, à savoir, les adresses commençant par https://<ApplicationServer>/flexicapture12/Server/FCAuth/ ou https://<ApplicationServer>/flexicapture12/Server/MobileApp/.
Utilisation d'un ticket ABBYY FlexiCapture 12 authentifié
Vous pouvez transmettre un ticket ABBYY FlexiCapture 12 authentifié au serveur en utilisant un fichier cookie (le fichier doit être nommé FlexiCaptureTmpPrn) ou une autorisation : en-têteBearer.
Exemple :
Nous recommandons l'utilisation d'une autorisation : en-têteBearer (les cookies ne sont pris en charge que pour la compatibilité descendante).
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é.
Pour télécharger le projet et les documents d'accompagnement, utilisez ce lien :JWT_Example.zip
12.04.2024 18:16:03