Gestion des déclarations personnalisées

Vous pouvez utiliser l'API REST des domaines d'identité pour ajouter des réclamations personnalisées à un jeton d'accès, à un jeton d'identité ou aux deux jetons.

Les demandes personnalisées sont des règles que vous pouvez ajouter à un jeton pour le domaine d'identité. Il n'y a pas de limite pour le nombre de réclamations personnalisées dans un jeton. La taille du jeton est limitée et les valeurs autorisées sont "8000", "16000", "32000", "128000".

Les exemples de commande cURL utilisent la structure d'URL :
https://<domainURL>/admin/v1/CustomClaims/{id}
  1. Indiquez les en-têtes sur la ligne de commande cURL :
       -H Authorization: Bearer <Access Token>
       -H Cache-Control: no-cache
       -H Accept:application/json

    Pour obtenir un jeton d'accès, reportez-vous à Utilisation de OAuth 2 pour accéder à l'API REST.

  2. Créez le nom de réclamation personnalisé MyATCustomClaim et la valeur MyATValue pour le jeton d'accès en exécutant la commande suivante :
       curl -i -X POST https://<domainURL>/admin/v1/CustomClaims

    Exemple

       curl -i -X POST https://<domainURL>/admin/v1/CustomClaims

    Voici un exemple de corps de demande JSON pour créer la demande personnalisée :

    {
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ],
        "name": "MyATCustomClaim",
        "value": "MyATValue",
        "expression": false,
        "mode": "always",
        "tokenType": "AT",
        "allScopes": true
    }

    Attribut

    Description

    name

    Nom de la réclamation personnalisée.

    Remarque : La longueur maximum est de 100 caractères.

    value

    Valeur de réclamation personnalisée.

    Remarque : La longueur maximum est de 100 caractères. Si la valeur provient de l'évaluation d'une expression utilisateur, il n'y a pas de limite.

    expression

    Indiquez si la valeur de la réclamation personnalisée est une expression utilisateur. Vous pouvez déterminer l'expression utilisateur à l'aide des adresses Users.

    Valeur : true ou false

    Exemple d'expression utilisateur

    • $user.name.formatted expression avec la valeur admin opc.
    • Expression $user.emails.0.type avec la valeur recovery.
    • Expression $user.emails.1.type avec la valeur work.
    • Expression $user.urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User.myCustomAttribute avec la valeur customValue.
    En fonction des expressions utilisateur, une demande renvoie un attribut à valeur unique ou tous les attributs associés à l'expression. Par exemple, les expressions suivantes renvoient une seule valeur dans un tableau :
    • $user.emails.0.value
    • $(user.emails[0].value)
    Alors que les expressions suivantes renvoient un tableau :
    • $user.emails.*.value
    • $(user.emails[*].value)

    allScopes

    Indiquez si la demande personnalisée est associée à un ensemble de portées ou à toutes les portées.

    Valeur : true ou false

    mode

    Indiquez comment attacher la réclamation personnalisée à un jeton.
    • always : la réclamation personnalisée sera attachée au jeton.
    • request : la réclamation personnalisée sera attachée au jeton uniquement si elle est demandée ou remplacée.
    • never : la réclamation personnalisée ne sera pas attachée au jeton.

    tokenType

    Indiquez le type de jeton.
    • AT : permet d'ajouter une réclamation personnalisée pour un jeton d'accès.
    • IT : permet d'ajouter une réclamation personnalisée pour un jeton d'identité.
    • BOTH : permet d'ajouter une réclamation personnalisée pour le jeton d'accès et d'identité.

    portées

    facultatif. La demande personnalisée sera intégrée aux jetons si une portée du tableau des portées est demandée dans la demande de jeton. Vous pouvez indiquer allScopes est égal à true sans tableau de portées associé ou allScopes est égal à false avec tableau de portées associé.

    Voici un exemple de corps de réponse :

    {
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ],
        "name": "MyATCustomClaim",
        "value": "MyATValue",
        "expression": false,
        "mode": "always",
        "tokenType": "AT",
        "allScopes": true,
        "id": "ddc7f88bea2a46258c593bddccaf2b86",
        "meta": {
            "created": "2022-05-17T04:33:43.640Z",
            "lastModified": "2022-05-17T04:33:43.640Z",
            "resourceType": "CustomClaim",
            "location": "https://<domainURL>/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86"
        },
        "idcsCreatedBy": {
            "value": "bac027a9500c4db9a09f5cfbcbda5076",
            "type": "App",
            "display": "exampleDomainAdmin",
            "$ref": "https://<domainURL>/admin/v1/Apps/bac027a9500c4db9a09f5cfbcbda5076"
        },
        "idcsLastModifiedBy": {
            "value": "bac027a9500c4db9a09f5cfbcbda5076",
            "type": "App",
            "display": "exampleDomainAdmin",
            "$ref": "https://<domainURL>/admin/v1/Apps/bac027a9500c4db9a09f5cfbcbda5076"
        }
    }

    Vous pouvez dériver l'expression utilisateur à partir de l'adresse /admin/v1/Users. Il s'agit du JSON renvoyé pour un administrateur.

    Les valeurs sont analysées en tant que chaîne et le gras dans l'exemple montre comment les valeurs sont dérivées pour les expressions suivantes.

    Expression :

    Valeur

    $user.name.formatted

    "admin opc"

    $user.emails.0.type

    Cette expression et la suivante sont un tableau sans étiquette, avec un nombre qui commence par 0 pour indiquer l'index de l'élément dans le tableau.

    "recovery"

    $user.emails.1.type

    "work"

    $user.urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User.myCustomAttribute

    "customValue"

    {
        "idcsCreatedBy": {
            "type": "App",
            "display": "idcssm",
            "value": "32e72bc93b30417697f323d5fa7bbe2e",
            "$ref": "https://<domainURL>/admin/v1/Apps/32e72bc93b30417697f323d5fa7bbe2e"
        },
        "id": "60703e0bddcf4dae9add114179bf042d",
        "meta": {
            "created": "2022-11-08T02:39:01.932Z",
            "lastModified": "2022-11-13T09:44:55.668Z",
            "resourceType": "User",
            "location": "https://<domainURL>/admin/v1/Users/60703e0bddcf4dae9add114179bf042d"
        },
        "active": true,
        "displayName": "admin opc",
        "idcsLastModifiedBy": {
            "value": "f79371bb03914056821a8afb9da5066d",
            "display": "idcssso",
            "type": "App",
            "$ref": "https://<domainURL>/admin/v1/Apps/f79371bb03914056821a8afb9da5066d"
        },
        "nickName": "TAS_TENANT_ADMIN_USER",
        "userName": "admin@oracle.com",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
            "isFederatedUser": false,
            "myCustomAttribute": "customValue"
        },
        "emails": [
            {
                "verified": false,
                "primary": false,
                "secondary": false,
                "value": "admin@oracle.com",
                "type": "recovery"
            },
            {
                "verified": false,
                "primary": true,
                "secondary": false,
                "value": "admin@oracle.com",
                "type": "work"
            }
        ],
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
            "locked": {
                "on": false
            }
        },
        "name": {
            "familyName": "opc",
            "givenName": "admin",
            "formatted": "admin opc"
        }
    }
  3. Remplacez tous les attributs de l'ID de réclamation personnalisé ddc7f88bea2a46258c593bddccaf2b86 en exécutant la commande suivante :
       curl -i -X PUT https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemple

       curl -i -X PUT https://<domainURL>/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86

    L'exemple suivant illustre un corps de demande.

    {
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ],
        "name": "MyATClaim1",
        "value": "MyATValue1",
        "expression": false,
        "mode": "request",
        "tokenType": "AT",
        "allScopes": true
    }

    Voici un exemple de réponse indiquant que la demande a réussi.

    {
        "idcsLastModifiedBy": {
            "type": "App",
            "value": "bac027a9500c4db9a09f5cfbcbda5076",
            "display": "exampleDomainAdmin",
            "$ref": "https://<domainURL>/admin/v1/Apps/bac027a9500c4db9a09f5cfbcbda5076"
        },
        "idcsCreatedBy": {
            "type": "App",
            "display": "exampleDomainAdmin",
            "value": "bac027a9500c4db9a09f5cfbcbda5076",
            "$ref": "https://<domainURL>/admin/v1/Apps/bac027a9500c4db9a09f5cfbcbda5076"
        },
        "mode": "request",
        "id": "ddc7f88bea2a46258c593bddccaf2b86",
        "value": "MyATValue1",
        "expression": false,
        "meta": {
            "created": "2022-05-17T04:33:43.640Z",
            "lastModified": "2022-05-17T04:41:13.177Z",
            "resourceType": "CustomClaim",
            "location": "https://<domainURL>/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86"
        },
        "allScopes": true,
        "name": "MyATCustomClaim1",
        "tokenType": "AT",
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ]
    }
  4. Définissez allScopes sur false pour l'ID ddc7f88bea2a46258c593bddccaf2b86 en exécutant la commande suivante :
       curl -i -X PATCH https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemple

       curl -i -X PATCH https://<domainURL>/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86

    L'exemple suivant illustre un corps de demande.

    {
        "Operations": [
            {
                "op": "replace",
                "path": "allScopes",
                "value": false
            }
        ],
        "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:PatchOp"
        ]
    }

    Voici un exemple de réponse indiquant que la demande a réussi.

    {
        "idcsLastModifiedBy": {
            "type": "User",
            "value": "210d294a075a4c86bbf6f958bceacf0c",
            "display": "admin opc",
            "$ref": "https://yourtenant.identity.oraclecloud.com/admin/v1/Users/210d294a075a4c86bbf6f958bceacf0c"
        },
        "idcsCreatedBy": {
            "type": "User",
            "display": "admin opc",
            "value": "210d294a075a4c86bbf6f958bceacf0c",
            "$ref": "https://<domainURL>/admin/v1/Users/210d294a075a4c86bbf6f958bceacf0c"
        },
        "mode": "always",
        "id": "ddc7f88bea2a46258c593bddccaf2b86",
        "value": "MyATValue",
        "expression": false,
        "meta": {
            "created": "2022-05-31T05:43:32.518Z",
            "lastModified": "2022-05-31T05:58:10.362Z",
            "resourceType": "CustomClaim",
            "location": "https://yourtenant.identity.oraclecloud.com/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86"
        },
        "allScopes": false,
        "name": "MyATCustomClaim",
        "tokenType": "AT",
        "scopes": [
            "phone"
        ],
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ]
    }
  5. Affichez toutes les réclamations personnalisées dans le locataire en exécutant la commande suivante :
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims

    Exemple

       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims
    L'exemple suivant illustre un corps de réponse.
    {
        "idcsLastModifiedBy": {
            "type": "User",
            "value": "210d294a075a4c86bbf6f958bceacf0c",
            "display": "admin opc",
            "$ref": "https://<domainURL>/admin/v1/Users/ddc7f88bea2a46258c593bddccaf2b86"
        },
        "idcsCreatedBy": {
            "type": "User",
            "display": "admin opc",
            "value": "ddc7f88bea2a46258c593bddccaf2b86",
            "$ref": "https://<domainURL>/admin/v1/Users/210d294a075a4c86bbf6f958bceacf0c"
        },
        "mode": "always",
        "id": "98e94996776845719cf3b737e565199a",
        "value": "MyATValue",
        "expression": false,
        "meta": {
            "created": "2022-05-31T05:43:32.518Z",
            "lastModified": "2022-05-31T05:58:10.362Z",
            "resourceType": "CustomClaim",
            "location": "https://<domainURL>/admin/v1/CustomClaims/98e94996776845719cf3b737e565199a"
        },
        "allScopes": false,
        "name": "MyATCustomClaim",
        "tokenType": "AT",
        "scopes": [
            "phone"
        ],
        "schemas": [
            "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
        ]
    }
  6. Affichez les réclamations personnalisées dans un locataire en fournissant le paramètre de requête.
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims?attributes=(schema attributes)

    Exemple

       curl -i -X GET https://yourtenant.identity.oraclecloud.com/admin/v1/CustomClaims?attributes=name,value

    L'exemple suivant illustre le corps de la réponse après avoir fourni le paramètre de requête ?attributes=name,value :

    {
        "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:ListResponse"
        ],
        "totalResults": 4,
        "Resources": [
            {
                "name": "AlwaysAllScopesATClaim10",
                "id": "edf077cbae59435dab3f9de5ba1fd619",
                "value": "AlwaysAllScopesATValue"
            },
            {
                "name": "MyATCustomClaim1",
                "id": "ddc7f88bea2a46258c593bddccaf2b86",
                "value": "MyATValue1"
            },
            {
                "name": "MyATCustomClaim",
                "id": "150d1eae9f0f4301a22312bd680aa4df",
                "value": "MyATValue"
            },
            {
                "name": "MyATCustomClaim2",
                "id": "2680b220be904698b43575e3d654a88c",
                "value": "MyATValue2"
            }
        ],
        "startIndex": 1,
        "itemsPerPage": 50
    }
  7. Vous pouvez éventuellement supprimer la réclamation personnalisée du locataire en exécutant la commande suivante :
       curl -i -X DELETE https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemple

       curl -i -X DELETE https://<domainURL>/admin/v1/CustomClaims/ddc7f88bea2a46258c593bddccaf2b86