Gestione delle richieste personalizzate

È possibile utilizzare l'API REST dei domini di Identity per aggiungere richieste personalizzate a un token di accesso, a un token di identità o a entrambi i token.

Le richieste personalizzate sono regole che è possibile aggiungere a un token per il dominio di Identity. Non è previsto alcun limite per il numero di richieste personalizzate in un token. La dimensione del token è limitata e i valori consentiti sono "8000", "16000", "32000", "128000".

Gli esempi di comandi cURL utilizzano la struttura URL:
https://<domainURL>/admin/v1/CustomClaims/{id}
  1. Specificare le intestazioni nella riga di comando cURL:
       -H Authorization: Bearer <Access Token>
       -H Cache-Control: no-cache
       -H Accept:application/json

    Per ottenere un token di accesso, vedere Utilizzo di OAuth 2 per accedere all'API REST.

  2. Creare il nome richiesta personalizzato MyATCustomClaim e il valore MyATValue per il token di accesso eseguendo il comando seguente:
       curl -i -X POST https://<domainURL>/admin/v1/CustomClaims

    Esempio

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

    Di seguito è riportato un esempio di corpo della richiesta JSON per creare la richiesta personalizzata.

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

    Attributo

    descrizione;

    name

    Il nome della richiesta personalizzata.

    Nota: la lunghezza massima è 100 caratteri.

    value

    Il valore del risarcimento personalizzato.

    Nota: la lunghezza massima è 100 caratteri. Se il valore deriva dalla valutazione di un'espressione utente, non è previsto alcun limite.

    expression

    Specificare se il valore del risarcimento personalizzato è un'espressione utente. È possibile determinare l'espressione utente utilizzando gli endpoint Utenti.

    Valore: true o false

    Esempio di espressione utente

    • $user.name.formatted expression con valore admin opc.
    • Espressione $user.emails.0.type con valore recovery.
    • Espressione $user.emails.1.type con valore work.
    • Espressione $user.urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User.myCustomAttribute con valore customValue.
    In base alle espressioni utente, un risarcimento restituisce un singolo attributo valore o tutti gli attributi associati all'espressione. Ad esempio, le seguenti espressioni restituiscono un singolo valore all'interno di un array:
    • $user.emails.0.value
    • $(user.emails[0].value)
    Mentre le seguenti espressioni restituiscono un array:
    • $user.emails.*.value
    • $(user.emails[*].value)

    allScopes

    Specificare se associare la richiesta personalizzata a un set di ambiti o a tutti gli ambiti.

    Valore: true o false

    mode

    Specificare la modalità di collegamento della richiesta personalizzata a un token.
    • always: la richiesta personalizzata verrà allegata al token.
    • request: la richiesta personalizzata verrà allegata al token solo se viene richiesta o sostituita.
    • never: la richiesta personalizzata non verrà allegata al token.

    tokenType

    Specificare il tipo di token.
    • AT: consente di aggiungere una richiesta personalizzata per un token di accesso.
    • IT: consente di aggiungere una richiesta personalizzata per un token di identità.
    • BOTH: consente di aggiungere una richiesta personalizzata per il token di accesso e identità.

    ambiti

    facoltativo. La richiesta personalizzata verrà incorporata nei token se nella richiesta del token è richiesto un ambito qualsiasi nell'array degli ambiti. È possibile specificare che allScopes sia uguale a true senza un array di ambiti associato oppure che allScopes sia uguale a false con l'array di ambiti associato.

    Di seguito è riportato un esempio del corpo della risposta.

    {
        "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"
        }
    }

    È possibile derivare l'espressione utente dall'endpoint /admin/v1/Users. JSON restituito per un utente amministratore.

    I valori vengono analizzati come stringa e il grassetto nell'esempio mostra come vengono derivati i valori per le espressioni seguenti.

    Espressione

    Valore

    $user.name.formatted

    "amministratore opc"

    $user.emails.0.type

    Questa espressione e la successiva sono un array senza etichetta, con un numero che inizia da 0 per indicare l'indice dell'elemento nell'array.

    "recupero"

    $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. Sostituire tutti gli attributi per l'ID richiesta personalizzato ddc7f88bea2a46258c593bddccaf2b86 eseguendo il comando seguente:
       curl -i -X PUT https://<domainURL>/admin/v1/CustomClaims/{id}

    Esempio

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

    Di seguito è riportato un esempio del corpo della richiesta.

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

    Di seguito è riportato un esempio di risposta che indica che la richiesta è riuscita.

    {
        "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. Impostare allScopes su false per l'ID ddc7f88bea2a46258c593bddccaf2b86 eseguendo il comando seguente:
       curl -i -X PATCH https://<domainURL>/admin/v1/CustomClaims/{id}

    Esempio

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

    Di seguito è riportato un esempio del corpo della richiesta.

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

    Di seguito è riportato un esempio di risposta che indica che la richiesta è riuscita.

    {
        "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. Visualizzare tutte le richieste personalizzate nel tenant eseguendo il seguente comando:
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims

    Esempio

       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims
    Di seguito è riportato un esempio del corpo della risposta.
    {
        "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. Visualizzare le richieste personalizzate in un tenant fornendo il parametro di query.
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims?attributes=(schema attributes)

    Esempio

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

    Di seguito è riportato un esempio del corpo della risposta dopo aver fornito il parametro di query ?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. Facoltativamente, eliminare la richiesta personalizzata dal tenant eseguendo il seguente comando:
       curl -i -X DELETE https://<domainURL>/admin/v1/CustomClaims/{id}

    Esempio

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