OneSpan Sign-Entwickler: OAuth-Ereignisbenachrichtigung für Salesforce - Teil 3

Duo Liang, 21. April 2021

In den letzten beiden Entwickler-Blogs haben wir in Teil 1 die grundlegenden Aspekte der Registrierung einer verbundenen App in Salesforce mit aktivierten OAuth-Einstellungen durchgespielt und uns dann in Teil 2 auf die Verwaltung eines Refresh-Tokens und die Aktualisierung des OneSpan Sign-Callback-Service konzentriert.

Dieser dritte Teil unserer fortlaufenden Blogserie enthält ein Demoprojekt, das zeigt, wie man einen Webservice in Salesforce implementiert, der als Callback-Listener fungiert. Wir werden den Code in Abschnitte unterteilen und den gesamten Workflow von der Transaktionserstellung bis zum Empfang und der Verarbeitung von Benachrichtigungen testen

Voraussetzungen

Um diese Vorgänge abzuschließen, stellen Sie sicher, dass Sie die vorherigen Blogs in dieser Reihe gelesen und die folgenden Aufgaben erledigt haben:

  • Registrieren einer Salesforce Connected App und Aktivieren der Oauth2-Authentifizierung
  • Abrufen eines Aktualisierungs-Tokens für diese App
  • OneSpan Sign Callback Service aktualisieren

Zusätzlich müssen Sie:

  • Laden Sie den Beispielcode in diesem Code Shareherunter
  • (optional) Installieren Sie das OneSpan Sign APEX SDK und machen Sie sich mit seiner grundlegenden Verwendung vertraut.

Einrichten eines Callback-Listeners

In diesem Abschnitt werden wir den Beispielcode Abschnitt für Abschnitt aufschlüsseln. Folgen Sie den nachfolgenden Erläuterungen und passen Sie den Code entsprechend an.

Im Wesentlichen haben wir eine Apex-Klasse als REST-Webdienst exponiert. Die Klassendefinition sieht wie folgt aus:

@RestResource(urlMapping='/oss/callback') global mit Freigabe class OssCallbackResource{ @HttpPostglobal static void callback() { ...... }

Wir haben einen Webdienst, der HTTP-Post-Anfragen bearbeitet, unter "https://yourdomain.salesforce.com/services/apexrest/oss/callback" veröffentlicht. Diese URL wird auch als Callback-URL bezeichnet

Sobald ein OneSpan Sign-Callback auf unsere Methode trifft, wird als erstes der eingehende JSON-Payload geparst und in unsere eigene Modellierung konvertiert.

        OssCallback ossCallback = (OssCallback)JSON.deserialize(RestContext.request.requestbody.tostring(),OssCallback.class); System.debug('Received callback: ' + RestContext.request.requestbody.tostring());

Ein Beispiel für eingehende Nutzdaten sieht so aus:

{ "@class": "com.silanis.esl.packages.event.ESLProcessEvent", "name": "PACKAGE_COMPLETE", "sessionUser": "0787be84-f095-44c7-ba00-787093df86fc", "packageId": "KHiRfOXgKK0gpVWwwpFOSNy6o34=", "message": null, "documentId": null }

Wenn der Ereignisname gleich "PACKAGE_COMPLETE" ist, wurde die Transaktion abgeschlossen, Sie können sie gemäß Ihrer Geschäftslogik behandeln:

        if(ossCallback.name.equals('PACKAGE_COMPLETE')){ downloadSignedDocuments(ossCallback); }   

In unserem Fall würden wir alle signierten Dokumente und die Beweiszusammenfassung in einen Dokumentenordner namens "onespan" herunterladen. Stellen Sie sicher, dass Sie diesen Ordner angelegt haben, oder Sie können den Code einfach anpassen und die Dateien an einem beliebigen Ort speichern

Hier haben wir die Funktionen des OneSpan APEX SDK verwendet, um die Integration zu erleichtern. Wenn Sie das APEX-SDK nicht installiert haben oder mit seiner Konfiguration oder grundlegenden Verwendung nicht vertraut sind, lesen Sie diese Anleitung

    private static void downloadSignedDocuments(OssCallback ossCallback){ OneSpanSDK sdk= new OneSpanSDK(); OneSpanAPIObjects.Package_x pack = sdk.getPackage(ossCallback.packageId); List docs = new List(); Folder folder = [select id from Folder where name='onespan' LIMIT 1]; for(OneSpanAPIObjects.Document document: pack.documents){ Blob response = sdk.downloadDocument(ossCallback.packageId, document.id); Document doc = new Document(); doc.Body = response; doc.FolderId = folder.id; doc.Name = pack.name + ' - ' + document.name; doc.Type = 'pdf'; docs.add(doc); } //download evidence summary String auditString= sdk.getAudit(ossCallback.packageId); Document auditDoc= new Document(); auditDoc.Body = EncodingUtil.base64Decode(auditString); auditDoc.F

Das war's! Sie sind nun bereit für die Bereitstellung in Ihrer eigenen Salesforce-Umgebung.

Testen Sie den Code

Aktualisieren Sie vor unserem abschließenden Test den OneSpan Sign Callback Service und stellen Sie sicher:

  • ihre Callback-URL korrekt konfiguriert ist
  • sie haben zumindest das Ereignis "PACKAGE_COMPLETE" ausgelöst

Um zu überprüfen, ob unser Callback-Listener wie erwartet funktioniert, können wir einfach eine Transaktion vom Senderportal oder von beliebigen Integrationspunkten erstellen, solange Sie "data" > "origin" : "OSS" im Transaktions-JSON mitgeführt haben:

4-21-1

Öffnen Sie vor dem nächsten Schritt die Salesforce-Entwicklerkonsole (In Salesforce > Klicken Sie auf Ihren Namen oder das Zahnradsymbol> Klicken Sie auf Entwicklerkonsole) und überwachen Sie die eingehenden Anrufe in Echtzeit

Jetzt können Sie das Signieren dieser Transaktion abschließen. In Ihrer Salesforce-Entwicklerkonsole werden Sie feststellen, dass neue Protokolle fast zur gleichen Zeit eintreffen. Doppelklicken Sie auf einen von ihnen und suchen Sie "DEBUG". Dadurch werden die Protokolle gefiltert und nur die Meldungen der Debug-Ebene angezeigt, die wir mit der Funktion System.debug() ausgegeben haben.

4-21-2

Navigieren Sie zu Ihrem Salesforce-Dokumentenordner, und Sie finden dort die signierten Dokumente und die Beweiszusammenfassung.

4-21-3

Damit ist der heutige Blog beendet. Inzwischen sollten Sie in der Lage sein, einen Callback-Listener in Salesforce zu implementieren und bereitzustellen, den OneSpan Sign-Callback-Service richtig zu konfigurieren und den Code zu testen

Wenn Sie Fragen zu diesem Blog oder andere Fragen zur Integration von OneSpan Sign in Ihre Anwendung haben, besuchen Sie die Foren der Entwickler-Community. Ihr Feedback ist uns wichtig!

OneSpan Sign-Entwickler-Community

OneSpan Sign-Entwickler-Community

Treten Sie der OneSpan Sign Developer Community bei! Foren, Blogs, Dokumentationen, SDK-Downloads und mehr.

Tritt heute bei