Authentifizierung mithilfe von SAML 2.0-Identitätsanbietern in FlexiCapture 12
Übersicht zum Authentifizierungsvorgang
Mit der SAML-Authentifizierung können ABBYY FlexiCapture 12-Benutzer vermeiden, Identitätsdaten (z. B. einen Benutzernamen und ein Kennwort) an die Anwendungsserver-Komponente von FlexiCapture zu senden, indem sie sich bei einem externen Identitätsanbieter (z. B. Google oder Facebook) authentifizieren und anschließend Daten über eine erfolgreiche Authentifizierung von einem vertrauenswürdigen Dritten an den Anwendungsserver weitergeben.
Der SAML-Authentifizierungsprozess für eine Benutzeranwendung besteht aus den folgenden Schritten:
- Authentifizieren bei dem externen Identitätsanbieter
- Abrufen der SAML-Authentifizierungsdaten des Benutzers vom externen Identitätsanbieter
- Senden der SAML-Authentifizierungsdaten an den Anwendungsserver
- Erhalt eines authentifizierten Tickets vom Anwendungsserver
Dieses Ticket kann bei Anfragen an den Anwendungsserver verwendet werden.
Hinweis: Das Benutzerkonto muss in der FlexiCapture-Datenbank vorhanden sein und über alle erforderlichen Berechtigungen verfügen.
Implementierung
Abrufen von SAML-Daten
Die SAML-Daten externer Identitätsanbieter sind wie folgt formatiert (dieses Beispiel stammt von OneLogin):
Das Benutzerkonto muss in der FlexiCapture-Datenbank vorhanden sein und über alle erforderlichen Berechtigungen verfügen. Zum Beispiel bietet OneLogin gebrauchsfertige Toolkits zum Aktivieren der SAML-Authentifizierung in mehreren Programmiersprachen.
Senden von SAML-Daten an den FlexiCapture 12-Anwendungsserver
Codieren Sie die SAML-Daten in base64 und senden Sie sie an den Anwendungsserver, indem Sie eine POST-Anforderung senden an https://<Application Server>/Flexicapture12/Server/Saml. Benennen Sie das Feld mit den SAML-Daten SAMLResponse.
publicstaticasyncTasksendSamlToServer(stringsamlData)
{
stringserviceUrl="https://<ApplicationServer>/Flexicapture12/Server/SAML";
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(serviceUrl);
request.Method="POST";
varfields=newDictionary<string,string>();
fields.Add("SAMLResponse",Convert.ToBase64String(Encoding.UTF8.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());
}
}
Wenn Sie eine Instanz verwenden, fügen Sie die Kennung der Instanz der Server-URL hinzu, wie z. B.https://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantName
Damit die Authentifizierung funktioniert, muss ein Benutzer mit einem Benutzernamen, der mit der Kennung in den SAML-Daten übereinstimmt, auf dem Anwendungsserver registriert werden. Der Wert des Feldes /samlp:Response/saml:Assertion/saml:Subject/saml:NameID wird als Login verwendet.
Der Anwendungsserver wird eine Antwort wie die folgende zurückgeben:
Der Wert im Tag <ticket> ist das authentifizierte FC 12-Ticket. Mit diesem Ticket können Sie alle Anwendungsserver-Schnittstellen aufrufen, für die eine Authentifizierung erforderlich ist. Anfragen an FlexiCapture-Webdienste müssen mit der FlexiCapture-Authentifizierung erstellt werden (Adressen beginnend mit https://<ApplicationServer>/flexicapture12/Server/FCAuth/ oder https://<ApplicationServer>/flexicapture12/Server/MobileApp/.
Verwenden des authentifizierten FC 12-Tickets
Sie können das Ticket mithilfe einer Cookie-Datei an den Server weitergeben (die Datei muss mit FlexiCaptureTmpPrn benannt werden) oder eine Autorisierung: Inhaber-Header. Beispiel:
Autorisierung: Inhaber 82BD00C6601EB7F8EF4265450F934D4103C5CA2F010DE1C5FAB4CC830A82300C743D09E5477279733F283D0B6E1C93ACC30FE353D4D9396649965432AAA7994078C3CC63567A95A35E03DA6FDE020F57
Wir empfehlen, den Header zu verwenden. Cookies werden unterstützt, um die Kompatibilität mit alten Lösungen zu gewährleisten.
Wenn die Authentifizierung erfolgreich ist, enthält die Antwort des Servers einen aktualisierten Ticketwert sowohl in einer Cookie-Datei mit demselben Benutzernamen (FlexiCaptureTmpPrn) als auch im AuthTicket-Header.Die nächste Anforderung muss mit dem aktualisierten Ticket erfolgen (Tickets verfallen nach einer bestimmten Zeit).
Einrichten eines vertrauenswürdigen Zertifikats auf dem Anwendungsserver
Der Anwendungsserver vertraut SAML-Daten von einem SAML-Identitätsanbieter nur, wenn diese Daten mit einem Zertifikat signiert sind, das von einer Stelle ausgestellt wurde, die dem Anwendungsserver vertraut.
So finden Sie heraus, welches Zertifikat vom SAML-Identitätsanbieter verwendet wird:
- Kopieren Sie den Inhalt des Tags <ds:X509Certificate> in der SAML-Antwort in einen Texteditor
- Speichern Sie die Textdatei mit der Dateierweiterung *.cer ab
- Doppelklicken Sie auf die *.cer-Datei
Ein Dialogfeld mit den Eigenschaften des Zertifikats wird geöffnet, und Sie können dessen Zertifizierungsstelle anzeigen. Damit der Anwendungsserver dem Zertifikat und der Vertrauenskette der Stelle vertraut, die das Zertifikat ausgestellt hat, fügen Sie dieses dem Ordner Vertrauenswürdige Stammzertifizierungsstellen im Zertifikatsspeicher des lokalen Computers auf dem Computer hinzu, auf dem der Anwendungsserver ausgeführt wird.
Laden Sie das Projekt und das dazugehörige Material hier herunter: SAML_Example.zip
4/12/2024 6:16:00 PM