Open Baking-Absichts-ID für OpenID Connect-Anforderungszuordnung
Wenn eine Anwendung eines anderen Anbieters eine Transaktion einleiten möchte, für die eine Benutzerberechtigung erforderlich ist (z. B. eine Überweisung), verwendet sie eine API, die vom Finanzinstitut oder von der Bank bereitgestellt wird, um die Details der Transaktion zu registrieren. Sie registriert beispielsweise den Betrag der Transaktion und den Typ der Währung. Dieser Prozess wird manchmal als "Erfassung einer Zahlungsabsicht" bezeichnet. Die API antwortet mit einer Absichts-ID, die in den UK Open Banking-Spezifikationen auch als Zustimmungs-ID bezeichnet wird. Die Anwendung startet den Datenfluss für einen OAuth-Berechtigungscode, um die Benutzerberechtigung abzurufen, die als Benutzerzustimmung aufgezeichnet wird.
- Extrahieren Sie die Absichts-ID aus der Anforderung.
- Rufen Sie die Informationen zum Absichtskontext ab, normalerweise durch Aufrufen der Bank-API.
- Wählen Sie aus, wie die Berechtigung in
id_tokenals Anforderung oder Geltungsbereichswert dargestellt werden soll.
Verfügbare Eingabeobjekte
Da diese angepasste Regel nach der Authentifizierung, aber vor der Autorisierung ausgeführt wird, enthalten die verfügbaren Informationen nicht alle möglichen Domänenobjekte. Sie sind auf die folgenden Typen beschränkt:
- HTTP-Anforderungskontext
- Wenn sich ein Benutzer an Verify anmeldet, kann in der Regel zur Anforderungszuordnung auf den Kontext der eingehenden HTTP-Anforderung zugegriffen werden. Alle OAuth-Anforderungsparameter, wie
claimsoderscope, sind in dieser Version vonrequestContextverfügbar. Der allgemeine Aufbau und die Verwendung vonrequestContextwerden im Abschnitt „ HTTP -Anforderungskontext“ des Dokuments „ r_attr_functions.html “ beschrieben.Zur Vereinfachung des Zugriffs werden bestimmte Werte vorab inrequestContextberechnet. Der Anforderungsparameterclaimswird im Allgemeinen wie im folgenden Beispiel als JSON-Code dargestellt.{ "id_token": { "claim_name": { "essential": false, "value": "some_value" } }, "userinfo": { "claim_name": { "essential": false, "value": "some_value" } } }Da der Zugriff auf diese JSON-Datei umständlich sein kann, weist der in
requestContextverwendete Schlüssel das Formatclaims_claimType_claimNameauf.claimTypeist entwederuserinfooderidtoken. Beachten Sie den fehlenden Unterstrich. Im vorherigen Beispiel kann der Wertclaim_namemithilfe vonrequestContext.getValue('claims_idtoken_claim_name')abgerufen werden.In ähnlicher Weise wird
scopeberechnet und durch ein Leerzeichen getrennt, um ein Zeichenfolgearray zu erstellen. - Identitätsquellenberechtigungsnachweis
Wenn sich ein Benutzer an Verify anmeldet, werden die Attribute der Berechtigungsnachweise der Identitätsquelle zur Anmeldesitzung hinzugefügt; auf diese kann in der Regel zur Anforderungszuordnung zugegriffen werden.
Das Domänenobjektidsuserist als Zuordnung mit einem Zeichenfolgeschlüssel und einem Zeichenfolgearraywert verfügbar. Beispiel:
Weitere Informationen finden Sie unter r_attr_functions.html.{ "realmName": ["cloudIdentityRealm"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"] }- Weitere Funktionen und Operatoren
Die Zuordnungsregel enthält Standardoperatoren und -funktionen. Der HTTP-Client ist auch für abgehende Anforderungen verfügbar. Weitere unterstützte Funktionen sind Hashing und Zeitmarken. Siehe die entsprechenden Abschnitte im „ r_attr_functions.html “.
Objekt zurückgeben
Da diese angepasste Regel zur Erstellung eines Berechtigungskontexts interpretiert werden muss, muss der Rückgabewert dieser Regel ein JSON-Objekt sein, das die folgenden obligatorischen Eigenschaften enthalten muss:
| Eigenschaft | Typ | Erforderlich? | Beschreibung |
|---|---|---|---|
type |
Zeichenfolge | Ja | Der Typ gibt den Typ der Transaktion an, die ausgeführt wird. Beispiel: Ein Zahlungsstart. Dies wird in Verify als Datenschutzzweck dargestellt. Die vom System bereitgestellte oder generierte Zweck-ID ist der Wert von type. |
intentID |
Zeichenfolge | Ja | Die Absichts-ID muss angegeben werden. Sie wird normalerweise aus requestContext berechnet. |
claims |
JSON-Objekt. Der JSON-Eigenschaftswert kann einen beliebigen Typ aufweisen. | Nein | In der Regel enthält das generierte ID-Token bei der Benutzerberechtigung einen Hinweis darauf, dass der Benutzer die Transaktion autorisiert hat, die durch die Absichts-ID angegeben wird. claims ist ein JSON-Objekt oder eine JSON-Zuordnung, wobei der Schlüssel der Name der Anforderung ist und der Wert eine beliebige JSON-kompatible Struktur sein kann, z. B. eine Zeichenfolge, eine Ganzzahl, ein anderes Objekt, ein Array oder andere Strukturen. Es können auch mehrere Anforderungen angegeben werden. |
scope |
Zeichenfolge | Nein | Wenn die Anforderung berechtigt ist, wird dieser Wert den erteilten Bereichen hinzugefügt. |
Alle zusätzlichen Attribute, wie z. B. Betrag oder Währung, werden als angepasste Attribute behandelt. Sie können auf der Seite für die Benutzereinwilligung mithilfe der entsprechenden Vorlagenmakros angezeigt werden, die später beschrieben werden.
UK Open Banking-Beispiel
- Ein PISP (Payment Initiation Service Provider), der sich beim Drittanbieter befindet und die Zahlungstransaktion einleitet.
- Ein ASPSP-Berechtigungsserver (ASPSP = Account Information Service Provider). In diesem Szenario ist der ASPSP Verify.
- Ein ASPSP-Ressourcenserver, auf dem die API für die Zahlungsinitialisierung gehostet wird.
- Die Absichts-ID extrahieren.
- Informationen zu dieser Transaktion vom Ressourcenserver abrufen.
- Absichts-ID aus Anforderung extrahieren
- Im folgenden Beispiel wird der UK Open Banking-Standard zum Senden der Absichts-ID über
claimsveranschaulicht. Die eingehende Berechtigungsanforderung enthältopenbanking_intent_idin den Anforderungen.
Die Anforderungen werden extrahiert und im Anforderungskontext verfügbar gemacht. Zum Abrufen des Werts wird der folgende Code verwendet:{ "id_token": { "openbanking_intent_id": { "value": "b508f9df-799b-4120-a13e-5d09f2931fa6", "essential": true } } }requestContext.getValue('claims_idtoken_openbanking_intent_id') - Transaktionsinformationen abrufen
- Transaktionsinformationen werden auf dem ASPSP-Ressourcenserver (ASPSP = Account Servicing Payment Service Provider) gespeichert, auf dem die Zustimmungs- oder Absichts-ID generiert wurde. Verwenden Sie den HTTP-Client, um eine Anforderung an den Ressourcenserver zu erstellen. Die folgende Anforderung ist ein Beispiel.
hc.getAsJSON("https://resource.myaspsp.com/internal/intents/" + context.intentID - Transaktion einem Datenschutzzweck und Anforderungen zuordnen
- Zur Erfassung von Einwilligungen für die Zahlungsinitiierung und den Kontozugriff für Open Banking müssen relevante Datenschutzzwecke erstellt werden. Beispielsweise muss für alle Zustimmungsanforderungen für die Zahlungsinitiierung ein
payment_initiation-Datenschutzzweck erstellt werden. Dieser Zweck wird danach der Eigenschafttypeim Rückgabeobjekt zugeordnet.Außerdem muss für UK Open Banking eineopenbanking_intent_id-Anforderung erstellt werden. Die übrigen Informationen zur Transaktion können auch zum Rückgabeobjekt hinzugefügt werden.{ "type": "payment_initiation", "intentID": "b508f9df-799b-4120-a13e-5d09f2931fa6", "currency": "USD", "amount": "1200.35", "merchant": "Merchant A", "claims": { "openbanking_intent_id": "b508f9df-799b-4120-a13e-5d09f2931fa6" } } - Beispielzuordnungsregel
statements: - if: match: "!has(requestContext.claims_idtoken_openbanking_intent_id)" return: null - context: "intentID := requestContext.getValue('claims_idtoken_openbanking_intent_id')" - context: 'intentContext := hc.getAsJSON("https://resource.myaspsp.com/internal/intents/" + context.intentID, { "Authorization": "apikey supersecretapikey" })' - return: >- { "type": context.intentContext.type, "intentID": context.intentID, "currency": context.intentContext.instructedAmount.currency, "amount": context.intentContext.instructedAmount.amount, "merchant": context.intentContext.creditorName, "claims": { "openbanking_intent_id": context.intentID } }
Zustimmungsseite anpassen
Da sich die Benutzererfahrung bei der Einwilligung zur Transaktionsautorisierung von der Standard-Einwilligung bei „ OAuth “ und der OpenID Connect-Einwilligung zum Zugriffsbereich unterscheidet, kann in der Vorlage für die Einwilligungsseite ein benutzerdefinierter Abschnitt erstellt werden; siehe „Single Sign-On für OpenID -Seiten anpassen “.
[RPT purpose_payment_initiation]
<input type="hidden" name="@PRIVACY_SCOPE_PNAME_REPEAT@"
value="@PRIVACY_SCOPE_REPEAT@" privacy-readonly="true" />
<input type="hidden" id="@PRIVACY_SCOPE_PNAME_REPEAT@_state" name="@PRIVACY_SCOPE_PSTATE_REPEAT@"
value="CONSENT_ALLOW" privacy-required="@PRIVACY_SCOPE_REQUIRED_REPEAT@" />
<div id="@PRIVACY_SCOPE_PNAME_REPEAT@_widget" class="bx--form-item" style="width:350px;"></div>
<div class="bx--grid" style="padding-left:0">
<div class="bx--row" style="padding-bottom:6px;">
<div class="bx--col-sm-1">Amount</div>
<div class="bx--col">@PRIVACY_SCOPE_CUSTOM_currency@ @PRIVACY_SCOPE_CUSTOM_amount@</div>
</div>
<div class="bx--row" style="padding-bottom:6px;">
<div class="bx--col-sm-1">Merchant</div>
<div class="bx--col">@PRIVACY_SCOPE_CUSTOM_merchant@</div>
</div>
<div class="bx--row" style="padding-bottom:6px;">
<div class="bx--col-sm-1">Reference</div>
<div class="bx--col">@PRIVACY_SCOPE_ATTRVALUE_REPEAT@</div>
</div>
</div>
[ERPT purpose_payment_initiation]Beachten Sie die folgenden Aspekte.- Ein neuer wiederholbarer Abschnitt, der für einen bestimmten Datenschutzzweck verwendet wird. Der verwendete Name weist das Format
purpose_{purposeID}auf.purposeIDist die ID des Datenschutzzwecks. Diese Zweck-ID kann vom System generiert oder vom Benutzer bereitgestellt werden. - Die beiden HTML-Formularfelder
@PRIVACY_SCOPE_PNAME_REPEAT@und@PRIVACY_SCOPE_PNAME_REPEAT@_statesind von grundlegender Bedeutung. Das erste Feld enthält die Verify-ID für den Zustimmungsdatensatz. Das zweite Feld enthält den Status der Zustimmung. - Auf angepasste Attribute, die von der erweiterten Regel zurückgegeben werden, kann mit dem Makro
@PRIVACY_SCOPE_CUSTOM_{attributeName}@verwiesen werden.@PRIVACY_SCOPE_CUSTOM_currency@wird beispielsweise durch den Währungswert ersetzt, der in der erweiterten Regel für Absichten zurückgegeben wird.