Authentifizierung mit JSON Web Token
Übersicht zum Authentifizierungsvorgang
JSON Web Token (JWT) ist ein Datenübertragungsformat für die sichere Übertragung von Daten zwischen ABBYY FlexiCapture 12 Anwendungsserver und Diensten Dritter. Bei der Authentifizierung über JWT werden keine Identifikationsdaten an den Anwendungsserver gesendet. Die Authentifizierung wird für einen Drittanbieter-Dienst ausgeführt. Anschließend wird der Anwendungsserver darüber informiert, dass der Benutzer von einem vertrauenswürdigen Dienst authentifiziert wurde.
Implementierung
Abruf der JSON-Daten
JSON-Datenbeispiel:
{"alg":"RS256","kid":"-JLCtyyTyF69AZrtjpk-xGs-nUE","x5t":"-JLCtyyTyF69AZrtjpk-xGs-nUE","typ":"JWT"}.
{"nameid":"user","nbf":1572267172,"exp":1572267772,"iss":"ABBYY","aud":"test JWT app"}
JSON-Daten, die Benutzerzertifikate enthalten, werden in Base64 verschlüsselt, um ein JSON Web Token (JWT) zu erstellen.
Die folgende Beispielanfrage erstellt ein JWT-Token:
Senden eines JWT zum Anwendungsserver
Ein JWT muss mit der folgenden URL an den Anwendungsserver gesendet werden: https://<ApplicationServer>/Flexicapture12/Server/jwt. Dies erfolgt mithilfe einer POST-Anforderung.
Hinweis. Wenn Sie eine Instanz verwenden, fügen Sie die Kennung der Instanz der URL des Anwendungsservers hinzu: 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() );
}
}
}
Damit die Authentifizierung funktioniert, muss ein Benutzer mit einer Anmeldung, die mit der Kennung im JWT übereinstimmt (im Wert des Knotens nameid enthalten), auf dem Anwendungsserver registriert sein
Der Anwendungsserver wird eine Antwort wie die folgende zurückgeben:
Der Wert im Feld Zicket entspricht dem authentifizierten ABBYY FlexiCapture 12-Ticket. Mit diesem Ticket können Sie alle Anwendungsserver-Schnittstellen aufrufen, für die eine Authentifizierung erforderlich ist. Auf Dienste sollte über die ABBYY FlexiCapture-Authentifizierung zugegriffen werden, d. h. Adressen, die beginnen mit https://<ApplicationServer>/flexicapture12/Server/FCAuth/ or https://<ApplicationServer>/flexicapture12/Server/MobileApp/.
Verwenden eines authentifizierten ABBYY FlexiCapture 12-Tickets
Sie können ein authentifiziertes ABBYY FlexiCapture 12-Ticket mithilfe einer Cookie-Datei an den Server übergeben (die Datei muss FlexiCaptureTmpPrn benannt werden) oder eine Kopfzeile Autorisierung:Inhaber.
Beispiel:
Wir empfehlen die Verwendung einer Autorisierung:Inhaber Kopfzeile (Cookies werden nur für die Abwärtskompatibilität unterstützt).
Einrichten eines vertrauenswürdigen Zertifikats auf dem Anwendungsserver
Der Anwendungsserver überprüft die vom Identitätsanbieter empfangenen Daten. Damit der Anwendungsserver diesen Daten vertrauen kann, muss er mit einem benutzerdefinierten Zertifikat signiert sein, das von einer Behörde aus der Anwendungsserver-Datenbank vertrauenswürdiger Behörden ausgestellt wurde.
Importieren Sie das Zertifikat in die ABBYY FlexiCapture-Datenbank. Die Daten werden jetzt mithilfe des Zertifikats überprüft. Weitere Informationen finden Sie unter Einrichten von Single Sign-On.
Wenn die Überprüfung fehlschlägt, bezieht sich der Anwendungsserver auf den Parameter AllowMixedModeCertificateValidation in den <appSettings> Einstellungen in der Web.config-Datei. Wenn dieser Parameter auf "true" gesetzt ist, wird die Überprüfung mit dem Zertifikat durchgeführt, das dem Ordner Vertrauenswürdige Stammzertifizierungsstellen im Zertifikatspeicher des lokalen Computers auf dem Computer hinzugefügt wurde, auf dem der Anwendungsserver ausgeführt wird.
Werden der Datenbank keine Zertifikate hinzugefügt werden, wird die Überprüfung mithilfe des Zertifikats im Ordner Vertrauenswürdige Stammzertifizierungsstellen ausgeführt und der Parameter AllowMixedModeCertificateValidation wird ignoriert.
Um das Projekt und das dazugehörige Material herunterzuladen, klicken Sie bitte auf diesen Link:JWT_Example.zip
12.04.2024 18:16:00