Token anpassen

Bei App ID werden Token zum Identifizieren von Benutzern und Sichern Ihrer Ressourcen verwendet. Sie können anpassen, welche Informationen der Service in die Token einfügen soll. Indem Sie die Informationen in Ihre Token einfügen, stehen sie Ihrer Anwendung zur Laufzeit zur Verfügung, ohne dass Sie zusätzliche Netzwerkaufrufe konfigurieren müssen. Weitere Informationen zu Token und ihrer Verwendung in App ID finden Sie unter Informationen zu Token.

Durch das Anpassen Ihrer Tokenkonfiguration können Sie sicherstellen, dass Ihre Anforderungen hinsichtlich Sicherheit und Bedienungskomfort erfüllt werden. Sollte ein Token aber manipuliert werden, könnte ein böswilliger Benutzer mehr Informationen oder Zeit erhalten, um Ihre Anwendung zu schädigen. Informieren Sie sich gründlich über die Auswirkungen der Anpassungen, bevor Sie sie vornehmen.

Informationen zur Zuordnung angepasster Claims

Ein Claim ist eine Erklärung, die von einer Entität zu sich selbst oder für eine andere Person abgegeben wird. Wenn Sie sich beispielsweise bei einer Anwendung mithilfe eines Identitätsproviders angemeldet haben, dann sendet der Provider der Anwendung eine Gruppe von Claims oder Erklärungen zu Ihrer Person, die diese Anwendung zusammen mit den Informationen, die bereits für Sie gespeichert wurden, in eine Gruppe einordnen kann. Auf diese Weise wird die App bei Ihrer Anmeldung mit Ihren Informationen eingerichtet, und zwar in der Art und Weise, in der Sie sie konfiguriert haben.

Welche Arten von Claims kann ich definieren?

Die Claims, die von App ID zur Verfügung gestellt werden, lassen sich mehreren Kategorien zuordnen, die sich durch den Grad der Anpassung unterscheiden.

Normalisierte Claims
Jedes Identitätstoken enthält einen Satz von Claims, der von App ID als normalisiert erkannt wird. Sofern verfügbar, werden die Claims standardmäßig direkt von Ihrem Identitätsprovider dem Token zugeordnet. Die Claims können nicht explizit ausgelassen werden, können aber durch angepasste Claims in Ihrem Token außer Kraft gesetzt werden. Zu den Claims gehören name, email, picture und locale.
Eingeschränkte Claims
Eingeschränkte Claims sind solche, die über begrenzte Anpassungsmöglichkeiten verfügen und durch angepasste Zuordnungen nicht überschrieben werden können. Für ein Zugriffstoken ist scope der einzige eingeschränkte Claim. Auch wenn es nicht überschrieben werden kann, lässt es sich durch Ihren eigenen Bereich erweitern. Wenn einem Zugriffstoken ein Bereich zugeordnet wird, muss der Wert eine Zeichenfolge sein und darf nicht das Präfix appid_ enthalten. Andernfalls wird er ignoriert. In Identitätstoken können die Claims identities und oauth_clients nicht geändert oder überschrieben werden.
Registrierte Claims
Registrierte Claims sind in Ihren Zugriffs- und Identitätstoken enthalten und werden durch App ID definiert. Sie können nicht durch angepasste Zuordnungen überschrieben werden. Diese Claims werden vom Service ignoriert. Zu ihnen gehören iss, aud, sub, iat, exp, amr und tenant.

Durch das Definieren eines Claims für Ihr Token wird das Attribut nicht geändert oder beseitigt. Es ändert die Informationen, die während der Laufzeit im Token vorhanden sind.

Wie werden Claims bestimmten Token zugeordnet?

Jede Zuordnung wird durch ein Datenquellenobjekt und einen Schlüssel definiert, der zum Abrufen des Claims verwendet wird. Sie können bis zu 100 Claims in jedes Token einfügen, sofern die maximalen Nutzdaten unter 100 KB bleiben. Wenn Sie verschachtelte Claims verwenden möchten, können Sie diese mithilfe der Punktsyntax einschließen. Beispiel: nested.attribute.

Die Claims werden für jedes Token separat festgelegt und nacheinander angewendet, wie im folgenden Beispiel gezeigt.

{
  "accessTokenClaims": [
    {
      "source": "saml",
      "sourceClaim": "moderator"
    },
    {
      "source": "saml",
      "sourceClaim": "viewer",
      "destinationClaim": "reader"
    }
  ],
  "idTokenClaims": [
    {
      "source": "saml",
      "sourceClaim": "attributes.uid"
    },
    {
      "source": "saml",
      "sourceClaim": "Name",
      "destinationClaim": "firstName"
    },
    {
      "source": "saml",
      "sourceClaim": "Country"
    }
  ]
}
Variablen für die Zuordnung von Ansprüchen erklärt
Object Beschreibung
source Definiert die Quelle des Claims. Mögliche Optionen: saml, cloud_directory, facebook, google, appid_custom und attributes.
sourceClaim Definiert den Claim, der von der Quelle bereitgestellt wird. Es kann sich auf die Benutzerinformationen des Identity Providers oder auf die App ID benutzerdefinierten Attribute des Benutzers beziehen.
destinationClaim Optional: Definiert das angepasste Attribut, das den aktuellen Claim im Token überschreiben kann.

Token konfigurieren

Mit der API können Sie anpassen, welche Informationen in Ihren App ID-Token zurückgegeben werden.

Wenn Sie die Lebensdauer Ihres Tokens konfigurieren möchten, können Sie die Änderungen schnell über das Service-Dashboard vornehmen. Weitere Informationen finden Sie unter Authentifizierung verwalten.

  1. Führen Sie am Terminal den folgenden Befehl aus, um einen API-Schlüssel abzurufen.

    ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE]
    
    Verstehen der Optionen des Befehls zum Erstellen eines API-Schlüssels
    Option Beschreibung
    NAME Der Name, den Sie Ihrem Schlüssel geben wollen. Beispiel: myKey.
    DESCRIPTION Eine Beschreibung des Schlüssels oder seiner Verwendung Beispiel: "This is my App ID API key".
    FILE Die Position, an der Sie Ihren Schlüssel speichern wollen. Beispiel: key_file.
  2. Rufen Sie mit dem API-Schlüssel, den Sie im vorherigen Schritt erhalten haben, ein IAM-Token ab.

    curl -k -X POST "https://iam.cloud.ibm.com/identity/token" \
    --header "Content-Type: application/x-www-form-urlencoded" \
    --header "Accept: application/json" \
    --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
    --data-urlencode "apikey=<apiKey>"
    
  3. Rufen Sie die Tenant-ID für Ihre Instanz des Service ab. Sie finden den Wert entweder in Ihrem Service oder in den Anwendungsberechtigungsnachweisen.

  4. Stellen Sie eine PUT-Anforderung an den Endpunkt /config/tokens mit Ihrer Tokenkonfiguration.

    curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/tokens" \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAMToken>" \
    -d '{
       "access": {
             "expires_in": 3600
       },
       "refresh": {
             "enabled": true,
             "expires_in": 2592001
       },
       "anonymousAccess": {
             "enabled": false
       },
       "accessTokenClaims": [
             {
             "source": "roles"
             },
             {
             "source": "saml",
             "sourceClaim": "name_id",
             "destinationClaim": "id"
             }
       ],
       "idTokenClaims": [
             {
             "source": "saml",
             "sourceClaim": "attributes.uid"
             }
       ]
    }'
    
    Verstehen der Token-Konfiguration
    Variable Beschreibung
    access: expires_in Die Gültigkeitsdauer des Tokens. Je kleiner der Wert ist, umso höher ist der Schutz, den Sie im Fall eines Tokendiebstahls haben. Der Wert wird in Sekunden angegeben und kann eine beliebige Ganzzahl zwischen 300 und 86400 sein. Der Standardwert ist 3600.
    refresh: expires_in Die Gültigkeitsdauer der Aktualisierungstokens. Je kleiner der Wert ist, umso höher ist der Schutz, den Sie im Fall eines Tokendiebstahls haben. Der Wert wird in Sekunden angegeben und kann eine beliebige Ganzzahl zwischen 86400 und 7776000 sein. Der Standardwert ist 2592000 (30 Tage).
    anonymousAccess Die Gültigkeitsdauer für anonyme Token. Anonyme Tokens werden den Benutzern zugewiesen, sobald sie mit Ihrer App interagieren. Wenn sich ein Benutzer anmeldet, werden die Informationen in dem anonymen Token an das Token übertragen, das dem Benutzer zugeordnet ist. Der Wert wird in Sekunden angegeben und kann eine beliebige Ganzzahl zwischen 86400 und 7776000 sein. Der Standardwert ist 2592000 (30 Tage).
    accessTokenClaims Ein Array mit den Objekten, die erstellt werden, wenn Claims zugeordnet werden, die sich auf Zugriffstoken beziehen. Vielleicht möchten Sie Informationen zu Rollen oder bestimmten Attributen aufnehmen, die vom ausgewählten Identitätsprovider eines Benutzers zurückgegeben werden. Hinweis: Wenn Sie bereits eine angepasste Anforderung mit dem Titel "Rollen (Roles)" von Ihrem Identitätsprovider verwenden, stellen Sie sicher, dass Sie eine Zielanforderung verwenden, um beide Werte anzuzeigen.
    idTokenClaims Ein Array mit den Informationen, die in Token vorhanden sind, wenn Sie Identitätstoken Claims zuordnen. Abhängig von Ihrer Konfiguration können Sie auch festlegen, dass in Ihrem Identitätstoken Rollen (roles) vorhanden sein sollen.

    Sie müssen die Lebensdauer des Tokens in jeder Anforderung, die Sie machen, festlegen. Wird ein Wert nicht festgelegt, so wird der Standardwert verwendet. Jede Anpassungsanforderung überschreibt die zuvor konfigurierten Werte. Beachten Sie, dass sich die Spezifikationen für die Konfiguration der Lebensdauer in der API von denen im Service-Dashboard unterscheiden.

  5. Nachdem Sie das zurückgegebene Token decodieren, sehen Sie ein Ergebnis ähnlich dem folgenden:

    {
       "sub" : "1234567890",
       "name" : "John Doe",
       "exp" : 1564566,
       "roles" : ["admin", "manager"],
       "id": "<nameIDFromSaml>",
       "attributes.uid": "<uidFromSaml>"
       ...
    }