Protegendo Web Services RESTful

Defina atribuições, privilégios e Clientes OAuth para garantir que a autenticação e a autorização sejam necessárias para acessar serviços Web RESTful.

Para proteger um web service RESTful, você precisa:

  • Criar uma atribuição

  • Criar um privilégio selecionando a função e os módulos ou recursos para proteger

Para permitir o acesso a um serviço RESTful protegido usando o Workflow OAUTH2, crie um cliente OAuth usando a função e o privilégio criados para proteger o serviço RESTful.

As seções a seguir fornecem informações sobre como criar atribuições, privilégios e clientes OAuth:

Gerenciando Atribuições

Você pode criar, editar e excluir atribuições para serviços RESTful na página Atribuições.

Para navegar até a página Atribuições, na página Visão Geral do REST, clique em Atribuições em Objetos ou no menu do cabeçalho, selecione Segurança e, em seguida, selecione Atribuições.

As ações disponíveis no menu de contexto são:

Criando uma Atribuição

Crie uma função com um nome específico. Depois que a função for criada, você poderá associá-la a um privilégio.

  1. Na página Atribuições, clique em Criar Atribuição.
  2. No campo Nome da Função, informe o nome da função a ser criada.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Criar Atribuição. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Atribuição.

  3. Clique em Criar.

    A nova função atribuída é exibida na página Funções.

Editando uma Atribuição

Esta seção descreve como editar uma função.

  1. Na página Atribuições, para a atribuição específica, clique em Ações menu de contexto e selecione Editar.
  2. Informe as alterações necessárias e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando uma função.

Excluindo uma Atribuição

Esta seção descreve como excluir uma atribuição.

  1. Na página Atribuições, para a atribuição específica, clique em Ações menu de contexto e selecione Excluir.

    Você é solicitado a confirmar.

  2. Clique em Sim para excluir.

Exibindo Privilégios Atribuídos

Esta seção descreve como exibir os privilégios associados a uma função.

Na página Atribuições, para a atribuição específica, clique em Ações menu de contexto e selecione Detalhes. Os privilégios atribuídos à função são exibidos.

Gerenciando Privilégios

Você pode criar, editar e excluir privilégios para serviços RESTful na página Privilégios.

Um privilégio define o conjunto de funções, pelo menos uma das quais um usuário autenticado deve ter para acessar um serviço RESTful protegido por um privilégio.

Para navegar até a página Privilégios, na página Visão Geral REST, clique em Privilégios em Objetos ou, no menu do cabeçalho, selecione Segurança e, em seguida, selecione Privilégios.

Os atributos de privilégio exibidos por padrão na exibição de cartão são mostrados na figura a seguir.

As ações disponíveis no menu de contexto são:

Criando um Privilégio

Esta seção descreve como criar um privilégio.

  1. Na página Privilégios, clique em Criar Privilégio.
  2. Insira os seguintes campos. Os campos com um asterisco (*) são obrigatórios:
    • Rótulo: Informe o nome do privilégio de uma forma que seja fácil de entender.
    • Nome: Informe um nome exclusivo para o privilégio.
    • Descrição: Informe uma breve descrição da finalidade do privilégio.
    • Comentários: Informe comentários.
    • Atribuições: Informe uma ou mais atribuições designadas ao privilégio.
    • Módulos Protegidos: Selecione os módulos a serem protegidos.
    • Recursos Protegidos: Em vez de Módulos Protegidos, use a guia Proteger Recursos para aplicar segurança com base em um padrão de URI.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao controle deslizante Create Privilege. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no controle deslizante Criar Privilégio.

  3. Clique em Criar.

    O novo privilégio é exibido na página Privilégios.

Editando um privilégio

Esta seção descreve como editar um privilégio.

  1. Na página Privilégios, para o privilégio específico, clique em Ações menu de contexto e selecione Editar.
  2. Faça as alterações necessárias e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando um privilégio.

Excluir um privilégio

Esta seção descreve como excluir um privilégio.

  1. Na página Privilégios, para o privilégio específico, clique em Ações menu de contexto e selecione Excluir.
  2. Você será solicitado a confirmar. Clique em Sim.

Gerenciando Clientes OAuth

Usando a autenticação baseada no OAuth 2.0, você pode garantir que seus web services RESTful sejam acessados somente por usuários ou clientes específicos.

OAuth 2.0 é um protocolo de Internet padrão que define fluxos para fornecer acesso condicional e limitado a uma API RESTful. Para obter mais informações, consulte Autenticação baseada em OAuth.

Você pode criar, editar e excluir Clientes OAuth na página Clientes OAuth.

Para navegar até a página Clientes OAuth, na página Visão Geral do REST, clique em Clientes em Objetos ou, no menu do cabeçalho, selecione Segurança e, em seguida, selecione Cliente OAuth.

Os atributos do Cliente OAuth exibidos por padrão na exibição de cartão são mostrados na figura a seguir.

Para criar um cliente OAuth, consulte Criando um Cliente OAuth.

As ações disponíveis no menu de contexto são:

Criando um Cliente OAuth

Cria o Cliente OAuth e concede as atribuições e os privilégios necessários.

  1. Na página Clientes OAuth, selecione Criar Cliente OAuth.
  2. Insira os seguintes campos. Os campos com um asterisco (*) são obrigatórios:

    Guia Definição do Cliente

    • Tipo de concessão: Selecione o tipo de concessão de autorização. As opções são Client_Cred, Auth Code ou Implicit.

      Para obter mais informações sobre esses tipos de concessão, consulte Fluxos do OAuth no Oracle REST Data Services Developer's Guide.

    • Nome: Nome do cliente.
    • Descrição: Descrição da finalidade do cliente.
    • URI de Redirecionamento: Informe o URI controlado pelo cliente para o qual o redirecionamento que contém um token ou erro de acesso do OAuth será enviado.
    • URI de Suporte: Informe o URI no qual os usuários finais podem entrar em contato com o cliente para obter suporte. Exemplo: http:// www.myclientdomain.com/support/
    • E-mail de Suporte: Informe o e-mail no qual os usuários finais podem entrar em contato com o cliente para obter suporte.
    • Logotipo: Faça upload do seu logotipo no formato de arquivo JPG, BMP ou SVG. Certifique-se de que o logotipo tenha menos de 100 KB.
    • Atribuições: Selecione as atribuições a serem concedidas.
    • Origens Permitidas: Adicione a lista de prefixos de URL.
    • Privilégios: Selecione os privilégios que o cliente deseja acessar.

    Mostrar código: Selecione esta opção para exibir o código PL/SQL equivalente ao painel Criar Cliente OAuth. Você pode copiar e executar esse código PL/SQL na planilha para executar a mesma ação que ocorre quando você clica em Criar no painel Criar Cliente OAuth.

  3. Clique em Criar.

    O Cliente OAuth registrado é exibido na página Clientes OAuth.

    Uma visualização do segredo do cliente é exibida. Os segredos só se aplicam aos tipos de concessão Credenciais do Cliente e Código OAuth. Copie o valor do segredo, pois esta é a única instância quando ele for mostrado. Se você esquecer o segredo do cliente, poderá usar a ação Rotacionar Segredo para alterá-lo. Consulte Gerenciando Segredos.

    O valor do ID do Cliente representa a credencial secreta do cliente OAuth. Clique em Mostrar/Ocultar ícone mostrar/ocultar para ver os valores.

    Teste o ponto final do serviço REST seguro usando um cliente REST ou a ferramenta de linha de comando cURL.

Editando um Cliente OAuth

Esta seção descreve como editar um Cliente OAuth.

  1. Na página Clientes OAuth, para o cliente específico, clique em Ações menu de contexto e selecione Editar.
  2. Edite os campos obrigatórios e clique em Salvar.

    Para obter uma descrição dos campos, consulte Criando um Cliente OAuth.

Excluindo um Cliente OAuth

Esta seção descreve como excluir um Cliente OAuth.

  1. Na página Clientes OAuth, para o cliente específico, clique em Ações menu de contexto e selecione Excluir.
  2. Você será solicitado a confirmar. Clique em Sim.

Exportando um Cliente OAuth

Esta seção descreve como exportar um Cliente OAuth.

  1. Na página Clientes OAuth, para o cliente específico, clique em Ações menu de contexto e selecione Exportar.
  2. No painel Cliente OAuth, clique no ícone Copiar ou Fazer Download para copiar ou fazer download das informações do Cliente OAuth.

Gerenciando Segredos

Depois que um segredo do cliente for gerado para um cliente OAuth, você poderá rotacionar ou revogar o segredo quando necessário. As opções Rotacionar e Revogar estão disponíveis no menu de contexto específico do cliente OAuth.

Observação:

Com a descontinuação dos pacotes PL/SQL OAUTH e OAUTH_ADMIN (consulte Referência de Pacote PL/SQL ORDS_SECURITY ), o processo de criação de segredo do cliente OAUTH é alterado para os tipos de concessão Credenciais do Cliente e Código de Autenticação.

Para clientes OAuth que foram criados com um segredo não criptografado, o label Legacy é exibido no cartão.

Rotacionar um Segredo do Cliente

Remove o segredo existente e cria um novo. Isso é útil quando você não consegue lembrar o valor secreto do cliente existente.

  • Se existir um segredo de cliente para o cliente OAuth, clique em Alternar para remover o existente e gerar um novo segredo de cliente.

  • Se um segredo do cliente for revogado e não houver valor de segredo designado, clique em Registrar para gerar um segredo do cliente para o cliente OAuth.

Revogar um Segredo do Cliente

Remove o segredo do cliente existente.

Selecione Revogar sessões para remover todas as sessões do cliente existentes.

Exemplos

Esta seção fornece alguns exemplos de como criar um cliente OAuth com diferentes tipos de concessão.

Criando um Cliente OAuth com o Tipo de Concessão de Credenciais do Cliente

Esta seção descreve como criar um Cliente OAuth usando o tipo de concessão Credencial do Cliente.

Crie um Cliente OAuth para o "exemplo" de módulo criado em Exemplo: Inserindo um Registro usando um Handler de POST. O ponto final do serviço RESTful é http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/.

Pré-requisitos

Crie uma função chamada Administrador de RH. Consulte Criando uma Atribuição

Crie um privilégio chamado Example.HR. Consulte Criando um Privilégio

  1. Na página Clientes OAuth, clique em Criar Cliente OAuth.
  2. Insira os seguintes campos:
    • No campo Tipo de concessão, selecione CLIENT_CRED.
    • Informe Nome, Descrição, URI de Redirecionamento, URI de Suporte e E-mail de Suporte para o Cliente OAuth.

    • Na guia Funções, adicione a função criada (Administrador de RH).

    • Na guia Privilégios, adicione o privilégio criado (Example.HR).

    • Clique em Criar.

    O novo cartão do Cliente OAuth é exibido na página Clientes OAuth.

  3. Usando o cURL, teste o ponto final do serviço sem credenciais OAuth.
    curl --location --request POST --header "Content-Type: application/json" 
    --data '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia" }' 
    'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    Você verá um erro.

  4. Teste o ponto final com credenciais OAuth:
    1. Para obter um token de acesso, selecione Obter Token do Portador no menu de contexto no cartão do Cliente OAuth.

      A caixa de diálogo Token OAuth é exibida. Use Copiar para Área de Transferência ícone copiar para a área de transferência para copiar o token.

    2. Em cURL, use o token de acesso ao portador na seguinte instrução para solicitar o recurso:

      curl -H "Content-Type: application/json" -H "Authorization: Bearer AMccwlnt99gm9kxDs_w1DA" --location --request POST --data 
      '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia"}' 'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    A saída mostra:

    {"deptno":55,"dname":"Sales","loc":"Australia","links":[{"rel":"collection",
    "href":"http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/"}]}
  5. Na página SQL, você pode verificar o novo registro que foi inserido na tabela DEPT usando a seguinte instrução:
    SELECT * FROM DEPT;

Criando um cliente OAuth usando o tipo de concessão de código de autorização

Esta seção descreve como criar um Cliente OAuth usando o tipo de concessão Código de Autenticação.

  1. Na página Clientes OAuth, clique em Criar Cliente OAuth.
  2. Insira os seguintes campos:
    • No campo Tipo de concessão, selecione Código de autorização.
    • Digite Nome, Descrição, URI de Redirecionamento, URI de Suporte e E-mail de Suporte para seu Cliente OAuth.

    • Na guia Atribuições, adicione as atribuições relevantes.

    • Na guia Privilégios, adicione os privilégios relevantes.

    • Clique em Criar.

    O novo cartão do Cliente OAuth é exibido na página Clientes OAuth.

  3. No cartão Cliente OAuth, clique no ícone Ações e selecione Detalhes do Autorização.
    O URI de Valor Exclusivo e Autorização é exibido.
  4. No campo URI de Autorização, clique no ícone Abrir em Nova Guia. Uma nova janela é exibida com uma mensagem de erro Não Autorizado junto com um link de Acesso.
  5. Clique em Acessar e informe suas credenciais de log-in novamente.
  6. Você será solicitado a aprovar a solicitação para acessar o URI protegido. Clique em Aprovar.
    Aprovar Notificação de Solicitação