Authentifizierung über SAML-Identitätsanbieter in ABBYY FlexiCapture 12
Authentifizieren Sie Benutzer von ABBYY FlexiCapture 12 über einen SAML-Identitätsanbieter: Rufen Sie SAML-Daten ab, senden Sie sie Base64-kodiert per POST an den Application Server und verwenden Sie das Ticket.
Die SAML-Authentifizierung ermöglicht es ABBYY-FlexiCapture-12-Benutzern, keine Identitätsdaten (wie Benutzername und Kennwort) an die FlexiCapture-Komponente Application Server senden zu müssen. Stattdessen authentifizieren sie sich bei einem externen Identitätsanbieter (z. B. Google oder Facebook) und übermitteln anschließend Informationen über die erfolgreiche Authentifizierung durch einen vertrauenswürdigen Drittanbieter an den Application Server.Der SAML-Authentifizierungsprozess in einer Benutzeranwendung umfasst die folgenden Schritte:
Sich beim externen Identitätsanbieter authentifizieren
Die SAML-Authentifizierungsdaten des Benutzers vom externen Identitätsanbieter abrufen
Die SAML-Authentifizierungsdaten an den Application Server senden
Ein authentifiziertes Ticket vom Application Server erhalten
Dieses Ticket kann dann bei Anfragen an den Application Server verwendet werden.
Das Benutzerkonto muss in der FlexiCapture-Datenbank vorhanden sein und über alle erforderlichen Berechtigungen verfügen.
Einzelheiten dazu, wie Sie Authentifizierungsdaten von einem externen Identitätsanbieter erhalten, finden Sie in der Dokumentation des Identitätsanbieters. OneLogin bietet beispielsweise vorgefertigte Toolkits zur Aktivierung der SAML-Authentifizierung in mehreren Programmiersprachen an.
SAML-Daten an den FlexiCapture 12 Application Server senden
Kodieren Sie die SAML-Daten in Base64 und senden Sie sie per POST-Anfrage an https://<Application Server>/Flexicapture12/Server/Saml an den Application Server. Der Name des Felds mit den SAML-Daten muss SAMLResponse sein.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() );
}
}Wenn Sie einen Mandanten verwenden, fügen Sie den Bezeichner des Mandanten zur Server-URL hinzu, z. B. https://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantNameDamit die Authentifizierung funktioniert, muss auf dem Application Server ein Benutzer mit einem Login registriert sein, das dem Bezeichner in den SAML-Daten entspricht. Der Wert des Felds /samlp:Response/saml:Assertion/saml:Subject/saml:NameID wird als Login verwendet.
Der Application Server gibt eine Antwort wie die folgende zurück:
Der Wert im Tag <ticket> ist das authentifizierte FlexiCapture 12-Ticket. Sie können dieses Ticket verwenden, um Aufrufe an alle Schnittstellen des Application Server auszuführen, die eine Authentifizierung erfordern. Anforderungen an FlexiCapture-Web-Services müssen mit der FlexiCapture-Authentifizierung gestellt werden (Adressen, die mit https://<ApplicationServer>/flexicapture12/Server/FCAuth/ oder https://<ApplicationServer>/flexicapture12/Server/MobileApp/ beginnen).
Sie können das Ticket mithilfe einer Cookie-Datei (die Datei muss FlexiCaptureTmpPrn heißen) oder eines Authorization: Bearer-Headers an den Server übergeben. Beispiel:
Wir empfehlen, den Header zu verwenden. Cookies werden aus Kompatibilitätsgründen mit älteren Lösungen unterstützt.Wenn die Authentifizierung erfolgreich ist, enthält die Antwort des Servers einen aktualisierten Ticket-Wert sowohl in einer Cookie-Datei mit demselben Login (FlexiCaptureTmpPrn) als auch im AuthTicket-Header. Die nächste Anfrage muss mit dem aktualisierten Ticket erfolgen (Tickets laufen nach einer bestimmten Zeit ab).
Einrichten eines vertrauenswürdigen Zertifikats auf dem Application Server
Der Application Server überprüft die vom Identitätsanbieter empfangenen Daten. Damit der Application Server diesen Daten vertraut, sollten sie mit einem benutzerdefinierten Zertifikat signiert sein, das von einer Zertifizierungsstelle aus der Datenbank vertrauenswürdiger Zertifizierungsstellen des Application Server ausgestellt wurde.Importieren Sie das Zertifikat in die ABBYY FlexiCapture-Datenbank. Die Daten werden dann mithilfe dieses Zertifikats überprüft. Weitere Informationen finden Sie unter Einrichten von Single Sign-On.Wenn die Überprüfung fehlschlägt, richtet sich der Application Server nach dem Parameter AllowMixedModeCertificateValidation in den <appSettings>-Einstellungen der Datei Web.config. Wenn dieser Parameter auf true gesetzt ist, wird die Überprüfung mithilfe des Zertifikats durchgeführt, das sich auf dem Computer, auf dem der Application Server ausgeführt wird, im Zertifikatspeicher „Lokaler Computer“ im Ordner Trusted Root Certification Authorities befindet.Wenn der Datenbank keine Zertifikate hinzugefügt wurden, wird die Überprüfung mithilfe des Zertifikats im Ordner Trusted Root Certification Authorities durchgeführt, und der Parameter AllowMixedModeCertificateValidation wird ignoriert.Laden Sie das Projekt und die zugehörigen Materialien herunter:SAML_Example.zip