OpenID Connect-Anforderungszuordnung für Berechtigungskontext

Basierend auf der Konfiguration können von OAuth- oder OpenID Connect-Abläufen in IBM® Verify Autorisierungsaktionen ausgeführt werden.

Die Abläufe können diese Aktionen enthalten.

  • Werten Sie die Zugriffsrichtlinie aus.
  • Berechnen Sie die Anforderungswerte, die in der Berechtigungserteilung gespeichert und zum Erstellen von ID-Tokens und der Introspektionsantwort verwendet werden.

Die Zuordnungsregel für Kontextanforderungen stellt einen Mechanismus zur Erweiterung des Kontextes bereit, der in der Berechtigungsanforderung erfasst wird. Die Berechtigungsanforderung kann beispielsweise einen angepassten Anforderungsparameter namens contextID enthalten. Die angepasste Regel kann contextID in einer HTTP-Anforderung für einen externen Endpunkt enthalten. Das Ergebnis dieser HTTP-Anforderung ist ein Objekt, das entpackt und zu requestContext hinzugefügt werden kann (wird während der Auswertung der Zugriffsrichtlinie und der Aufbereitung der Erteilung verwendet). Siehe r_attr_functions.html

Die Regel kann mit einer einfachen einzeiligen Ausdruckssprache oder als erweitertes mehrzeiliges YAML-basiertes Dokument geschrieben werden. Siehe „Multi-Line Rule Executor “.

Verfügbare Eingabeobjekte

Da die 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 Objekte beschränkt.
HTTP-Anforderungskontext
Wenn sich ein Benutzer an Verify anmeldet, kann auf den Kontext der eingehenden HTTP-Anforderung in der Regel der Anforderungszuordnung zugegriffen werden. Alle OAuth-Anforderungsparameter, wie claims oder scope, sind in dieser Version von requestContext verfügbar. Der allgemeine Aufbau und die Verwendung von requestContext werden im Abschnitt „ HTTP -Anforderungskontext“ unter r_attr_functions.html beschrieben.
Für den Zugriff werden bestimmte Werte in requestContext vorab berechnet. Der Anforderungsparameter claims wird in der Regel als JSON-Datei wie im folgenden Beispiel dargestellt.

{
    "id_token": { 
        "claim_name": { 
            "essential": false, 
            "value": "some_value"
        }
    },
    "userinfo": {
        "claim_name": { 
            "essential": false, 
            "value": "some_value"
        }
    }
}

Der Zugriff auf dieses Format kann umständlich sein. Der in requestContext verwendete Schlüssel weist das Format claims_claimType_claimName auf. claimType ist entweder userinfo oder idtoken (beachten Sie das fehlende Unterstreichungszeichen). Im vorherigen Beispiel kann der Wert claim_name mithilfe von requestContext.getValue('claims_idtoken_claim_name') abgerufen werden.

In ähnlicher Weise wird scope durch das Leerzeichen getrennt, um ein Zeichenfolgenarray zu erstellen.

Identitätsquellenberechtigungsnachweis
Wenn sich ein Benutzer an Verify anmeldet, werden die Attribute des Identitätsquellenberechtigungsnachweises zur Anmeldesitzung hinzugefügt; auf sie kann mithilfe der Anforderungszuordnungsregel zugegriffen werden.
Das Domänenobjekt idsuser ist als Zuordnung mit einem Zeichenfolgeschlüssel und einem Zeichenfolgearraywert verfügbar. Beispiel:

{
  "realmName": ["cloudIdentityRealm"],
  "displayName": ["Jessica J. Hill"],
  "phone": ["+12324321234"]
}
Siehe r_attr_functions.html.
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 unter r_attr_functions.html.

Objekt zurückgeben

Von dieser angepassten Regel wird erwartet, dass sie ein JSON-Objekt zurückgibt, und es wird erwartet, dass der Wert jeder JSON-Eigenschaft ein Zeichenfolgearray ist.

Im folgenden Beispiel wird ein Rückgabeobjekt dargestellt.

{
   "ageRange": ["toddler"],
   "interests": ["sleeping", "other_misc_activities"]
}
Dieser Rückgabewert wird verarbeitet und kann später in erweiterten Regelattributen über requestContext.ageRange und requestContext.interests aufgerufen werden. Erweiterte Regelattribute können in Zugriffsrichtlinien wie {{requestContext.ageRange[0] != 'toddler'}} oder zum Zuordnen von Attributen in der Berechtigungserteilung requestContext.interests verwendet werden.

Beispiel - Hobbys zum ID-Token hinzufügen

Der folgende Code ist ein Beispiel für die angepasste Regel für die Anforderungszuordnung, durch die hobbies zum ID-Token hinzugefügt wird.

statements:
- context: "contextData := hc.getAsJSON('https://jke.com/users/' + idsuser.getValue('uid'), { 'Authorization': 'apikey supersecretkey' })"
- return: >-
   {
      "hobbies": request.Context.interests.filter(x, x != 'other')
   }
In diesem Beispiel wird von der Regel ein Endpunkt für externe Benutzer aufgerufen, um zusätzliche Informationen zum Benutzer abzurufen. Dabei wird das Objekt idsuser verwendet, das die authentifizierte Sitzung des Benutzers in Verify darstellt. Schließlich wird von der Regel hobbies aus der Antwort extrahiert.
Hinweis: Diese Regel führt keinerlei Validierung durch und ist noch nicht für den produktiven Einsatz geeignet.
Auf hobbies kann mit den folgenden Methoden zugegriffen werden.