Gerenciando Reivindicações Personalizadas

Você pode usar a API REST dos domínios de identidade para adicionar reivindicações personalizadas a um token de acesso, um token de identidade ou ambos os tokens.

As reivindicações personalizadas são regras que você pode adicionar a um token do domínio de identidades. Não há limite para o número de reivindicações personalizadas em um token. O tamanho do token é limitado e os valores permitidos são "8000", "16000", "32000", "128000".

Os exemplos de comando cURL usam a estrutura de URL:
https://<domainURL>/admin/v1/CustomClaims/{id}
  1. Especifique os cabeçalhos na linha de comando cURL:
       -H Authorization: Bearer <Access Token>
       -H Cache-Control: no-cache
       -H Accept:application/json

    Para obter um token de acesso, consulte Trabalhando com OAuth 2 para Acessar a API REST.

  2. Crie o nome da reivindicação personalizada MyATCustomClaim e o valor MyATValue para o token de acesso executando o seguinte comando:
       curl -i -X POST https://<domainURL>/admin/v1/CustomClaims

    Exemplo

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

    Veja a seguir um exemplo de corpo de solicitação JSON para criar a reivindicação personalizada:

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

    Atributo

    Descrição

    name

    O nome da reivindicação personalizada.

    Observação: O comprimento máximo é 100 caracteres.

    value

    O valor da reivindicação personalizada.

    Observação: O comprimento máximo é 100 caracteres. Se o valor vier da avaliação de uma expressão de usuário, não haverá limite.

    expression

    Especifique se o valor da reivindicação personalizada é uma expressão do usuário. Você pode determinar a expressão do usuário usando os pontos finais Usuários.

    Valor: true ou false

    Exemplo de Expressão de Usuário

    • $user.name.formatted expression com o valor admin opc.
    • Expressão $user.emails.0.type com o valor recovery.
    • Expressão $user.emails.1.type com o valor work.
    • Expressão $user.urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User.myCustomAttribute com o valor customValue.
    Com base nas expressões do usuário, uma reivindicação retorna um atributo de valor único ou todos os atributos associados à expressão. Por exemplo, as seguintes expressões retornam um único valor dentro de uma matriz:
    • $user.emails.0.value
    • $(user.emails[0].value)
    Enquanto as seguintes expressões retornam uma matriz:
    • $user.emails.*.value
    • $(user.emails[*].value)

    allScopes

    Especifique se associa a reivindicação personalizada a um conjunto de escopos ou a todos os escopos.

    Valor: true ou false

    mode

    Especifique como deseja anexar a reivindicação personalizada a um token.
    • always: A reivindicação personalizada será anexada ao token.
    • request: A reivindicação personalizada só será anexada ao token se for solicitada ou substituída.
    • never: A reivindicação personalizada não será anexada ao token.

    tokenType

    Especifique o tipo de token.
    • AT: Para adicionar uma reivindicação personalizada para um token de acesso.
    • IT: Para adicionar uma reivindicação personalizada para um token de identidade.
    • BOTH: Para adicionar uma reivindicação personalizada para o token de acesso e identidade.

    escopo

    Opcional. A Reivindicação Personalizada será incorporada aos tokens se qualquer escopo no array de escopos for solicitado na solicitação de token. Você pode especificar allScopes igual a true sem array de escopos associados ou ter allScopes igual a false com array de escopos associados.

    A seguir, um exemplo do corpo da resposta:

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

    Você pode derivar a expressão do usuário do ponto final /admin/v1/Users. Este é o JSON retornado para um usuário administrador.

    Os valores são analisados como String, e o negrito na amostra mostra como os valores são derivados para as expressões a seguir.

    Expressão

    Valor

    $user.name.formatted

    "admin opc"

    $user.emails.0.type

    Esta expressão e a próxima são uma matriz não rotulada, com um número que começa em 0 para indicar o índice do elemento na matriz.

    "recuperação"

    $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. Substitua todos os atributos do id de reivindicação personalizado ddc7f88bea2a46258c593bddccaf2b86 executando o seguinte comando:
       curl -i -X PUT https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemplo

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

    A seguir, um exemplo do corpo da solicitação.

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

    Veja a seguir um exemplo da resposta indicando que a solicitação foi bem-sucedida.

    {
        "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 como false para o id ddc7f88bea2a46258c593bddccaf2b86 executando o seguinte comando:
       curl -i -X PATCH https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemplo

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

    A seguir, um exemplo do corpo da solicitação.

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

    Veja a seguir um exemplo da resposta indicando que a solicitação foi bem-sucedida.

    {
        "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. Exiba todas as reivindicações personalizadas no tenant executando o seguinte comando:
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims

    Exemplo

       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims
    A seguir, um exemplo do corpo da resposta.
    {
        "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. Exiba as reivindicações personalizadas em um tenant fornecendo o parâmetro de consulta.
       curl -i -X GET https://<domainURL>/admin/v1/CustomClaims?attributes=(schema attributes)

    Exemplo

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

    Veja a seguir um exemplo do corpo da resposta depois de fornecer o 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, exclua a reivindicação personalizada do tenant executando o seguinte comando:
       curl -i -X DELETE https://<domainURL>/admin/v1/CustomClaims/{id}

    Exemplo

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