Gestión de reclamaciones personalizadas

Puede utilizar la API de REST de dominios de identidad para agregar reclamaciones personalizadas a un token de acceso, un token de identidad o ambos tokens.

Las reclamaciones personalizadas son reglas que puede agregar a un token para el dominio de identidad. No hay límite para el número de reclamaciones personalizadas en un token. El tamaño del token es limitado y los valores permitidos son "8000", "16000","32000", "128000".

Los ejemplos de comandos de cURL utilizan la estructura de URL:
https://<domainURL>/admin/v1/CustomClaims/{id}
  1. Especifique las cabeceras en la línea de comandos de cURL:
       -H Authorization: Bearer <Access Token>
       -H Cache-Control: no-cache
       -H Accept:application/json

    Para obtener un token de acceso, consulte Trabajar con OAuth 2 para acceder a la API de REST.

  2. Cree el nombre de reclamación personalizado MyATCustomClaim y el valor MyATValue para el token de acceso ejecutando el siguiente comando:
       curl -i -X POST https://<domainURL>/admin/v1/CustomClaims

    Ejemplo

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

    A continuación se muestra un ejemplo de un cuerpo de solicitud JSON para crear la reclamación personalizada:

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

    Atributo

    Descripción

    name

    Nombre de reclamación personalizado.

    Nota: La longitud máxima es de 100 caracteres.

    value

    Valor de reclamación personalizado.

    Nota: La longitud máxima es de 100 caracteres. Si el valor proviene de la evaluación de una expresión de usuario, no hay límite.

    expression

    Especifique si el valor de reclamación personalizado es una expresión de usuario. Puede determinar la expresión de usuario mediante los puntos finales Users.

    Valor: true o false

    Ejemplo de expresión de usuario

    • $user.name.formatted expression con el valor admin opc.
    • Expresión $user.emails.0.type con el valor recovery.
    • Expresión $user.emails.1.type con el valor work.
    • Expresión $user.urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User.myCustomAttribute con el valor customValue.
    Según las expresiones de usuario, una reclamación devuelve un atributo de valor único o todos los atributos asociados a la expresión. Por ejemplo, las siguientes expresiones devuelven un único valor dentro de una matriz:
    • $user.emails.0.value
    • $(user.emails[0].value)
    Mientras que las siguientes expresiones devuelven una matriz:
    • $user.emails.*.value
    • $(user.emails[*].value)

    allScopes

    Especifique si la reclamación personalizada se asocia a un juego de ámbitos o a todos los ámbitos.

    Valor: true o false

    mode

    Especifique cómo desea adjuntar la reclamación personalizada a un token.
    • always: la reclamación personalizada se anexará al token.
    • request: la reclamación personalizada se anexará al token solo si se solicita o sustituye.
    • never: la reclamación personalizada no se asociará al token.

    tokenType

    Especifique el tipo de elemento.
    • AT: para agregar una reclamación personalizada para un token de acceso.
    • IT: para agregar una reclamación personalizada para un token de identidad.
    • BOTH: para agregar una reclamación personalizada para el token de acceso e identidad.

    ámbitos

    opcional. La reclamación personalizada se incrustará en tokens si se solicita algún ámbito en la matriz de ámbitos en la solicitud de token. Puede especificar que allScopes sea igual a true sin matriz de ámbitos asociada o que allScopes sea igual a false con matriz de ámbitos asociada.

    A continuación se muestra un ejemplo de cuerpo de respuesta:

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

    Puede derivar la expresión de usuario del punto final /admin/v1/Users. Este es el JSON devuelto para un usuario administrador.

    Los valores se analizan como String y la negrita del ejemplo muestra cómo se derivan los valores para las siguientes expresiones.

    Expresión

    Valor

    $user.name.formatted

    "admin opc"

    $user.emails.0.type

    Esta expresión y la siguiente son una matriz sin etiquetas, con un número que comienza en 0 para indicar el índice del elemento en la matriz.

    "La recuperación"

    $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. Sustituya todos los atributos para el ID de reclamación personalizado ddc7f88bea2a46258c593bddccaf2b86 ejecutando el siguiente comando:
       curl -i -X PUT https://<domainURL>/admin/v1/CustomClaims/{id}

    Ejemplo

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

    A continuación se muestra un ejemplo de cuerpo de solicitud.

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

    A continuación, se muestra un ejemplo de la respuesta que indica que la solicitud se realizó correctamente.

    {
        "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. Defina allScopes en false para el ID ddc7f88bea2a46258c593bddccaf2b86 ejecutando el siguiente comando:
       curl -i -X PATCH https://<domainURL>/admin/v1/CustomClaims/{id}

    Ejemplo

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

    A continuación se muestra un ejemplo de cuerpo de solicitud.

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

    A continuación, se muestra un ejemplo de la respuesta que indica que la solicitud se realizó correctamente.

    {
        "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. Para ver todas las reclamaciones personalizadas del inquilino, ejecute el siguiente comando:
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims

    Ejemplo

       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims
    A continuación se muestra un ejemplo de cuerpo de respuesta.
    {
        "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. Visualice las reclamaciones personalizadas de un inquilino proporcionando el parámetro de consulta.
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims?attributes=(schema attributes)

    Ejemplo

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

    A continuación se muestra un ejemplo del cuerpo de la respuesta después de proporcionar el parámetro de consulta ?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. Opcionalmente, puede suprimir la reclamación personalizada del inquilino ejecutando el siguiente comando:
       curl -i -X DELETE https://<domainURL>/admin/v1/CustomClaims/{id}

    Ejemplo

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