Compartilhar via


Usar o fluxo de concessão implícito do OAuth 2.0 no seu site do Power Pages

Este recurso permite que um cliente faça chamadas do cliente para APIs externas e proteja-as usando o fluxo de concessão implícita do OAuth. Ele fornece um ponto de extremidade para obter tokens de id seguro. Esses tokens conterão informações de identidade do usuário a serem usadas por APIs externas para autorização seguindo o fluxo de concessão implícita do OAuth 2.0. As informações de identidade de um usuário conectado são passadas de maneira segura para as chamadas AJAX externas, o que ajuda os desenvolvedores a passar o contexto de autenticação e também ajudará os usuários a proteger suas APIs.

Certificados personalizados

Use o centro de administração do Power Platform para carregar o certificado personalizado. Depois de carregar o certificado personalizado, você precisará atualizar as configurações do site como abaixo:

  1. Vá para o aplicativo do Gerenciamento de Portal e, na seção Site, selecione Configurações do Site.

  2. Para criar uma configuração, selecione Novo.

  3. Para editar uma configuração existente, selecione CustomCertificates/ImplicitGrantflow.

  4. Especifique valores:

    • Nome:CustomCertificates/ImplicitGrantflow
    • Site: o site associado
    • Valor: copie a impressão digital do certificado personalizado carregado na tela Gerenciar certificado personalizado e cole-a aqui. O valor indicará qual certificado será usado para o fluxo de concessão implícita.
  5. Selecione Salvar e Fechar.

Detalhes do ponto de extremidade do token

Você também pode obter um token fazendo uma solicitação post para o ponto de extremidade do <portal_url>/_services/auth/token. O ponto de extremidade do token é compatível com os seguintes parâmetros:

Parâmetro Obrigatório? Descrição
client_id Não Uma cadeia de caracteres que é passada ao fazer uma chamada para o ponto de extremidade. Você deve garantir que a ID do cliente seja registrada. Caso contrário, um erro será exibido. A ID do cliente é adicionada às declarações no token como parâmetros aud e appid e pode ser usada pelos clientes para validar se o token retornado é para o aplicativo.
O comprimento máximo é de 36 caracteres. Somente caracteres alfanuméricos e hífen são compatíveis.
estado Não Um valor incluído na solicitação que também é retornado na resposta do token. Pode ser uma cadeia de qualquer conteúdo que você queira usar. Geralmente, um valor exclusivo gerado aleatoriamente é usado para evitar ataques de falsificação de solicitação entre sites.
O comprimento máximo é de 20 caracteres.
nonce Não Um valor de cadeia enviado pelo cliente incluído no token de ID resultante como uma reivindicação. O cliente pode verificar esse valor para atenuar os ataques de repetição de token. O tamanho máximo é de 20 caracteres.
response_type Não Este parâmetro oferece suporte apenas a token como valor, permitindo que seu aplicativo receba imediatamente um token de id do ponto de extremidade, sem fazer uma segunda solicitação ao ponto de extremidade.

Observação

Mesmo que os parâmetros client_id, state e nonce sejam opcionais, recomenda-se usá-los para garantir que suas integrações sejam seguras.

Resposta bem-sucedida

O ponto de extremidade de token retorna estado e expires_in como cabeçalhos de resposta e token no corpo do formulário.

Resposta de erro

O erro em um ponto de extremidade de token é retornado como um documento JSON com os seguintes valores:

  • ID do Erro: identificador exclusivo do erro.
  • Mensagem de erro: uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação.
  • ID da Correlação: um GUID usado para fins de depuração. Se você tiver habilitado o log de diagnóstico, a ID de correlação estará presente nos logs de erro do servidor.
  • Timestamp: data e hora em que o erro é gerado.

A mensagem de erro é exibida no idioma padrão do usuário conectado. Se o usuário não estiver conectado, uma página de entrada será exibida para que o usuário se conecte. Por exemplo, uma resposta de erro é assim:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Validar token de ID

Apenas obter um token de ID não é suficiente para autenticar o usuário; você também deve validar a assinatura do token e verificar as declarações nele com base nos requisitos do seu aplicativo. O ponto de extremidade de token público fornece a chave pública do site, que pode ser usada para validar a assinatura do token fornecido pelo site. A URL para o ponto de extremidade de token público é: <portal_url>/_services/auth/publickey.

Ativar ou desativar o fluxo de concessão implícito

Por padrão, o fluxo de concessão implícito está habilitado. Se você quiser desativar o fluxo de concessão implícita, defina o valor da configuração do site Connector/ImplicitGrantFlowEnabled como Falso.

Se essa configuração do site não estiver disponível no seu site, você deverá criar uma nova configuração do site com o valor apropriado.

Configurar validade de token

Por padrão, o token é válido por 15 minutos. Se você quiser alterar a validade do token, defina o valor da configuração do site ImplicitGrantFlow/TokenExpirationTime como o valor necessário. O valor deve ser especificado em segundos. O valor máximo pode ser de 1 hora e o valor mínimo deve ser de 1 minuto. Se um valor incorreto for especificado (por exemplo, caracteres alfanuméricos), o valor padrão de 15 minutos será usado. Se você especificar um valor maior que o valor máximo ou menor que o valor mínimo, os valores máximo e mínimo serão usados, respectivamente, por padrão.

Por exemplo, para definir a validade do token para 30 minutos, defina o valor da configuração do site ImplicitGrantFlow/TokenExpirationTime como 1800. Para definir a validade do token para 1 hora, defina o valor da configuração do site ImplicitGrantFlow/TokenExpirationTime como 3600.

Registrar a ID do cliente para o fluxo de concessão implícito

Você deve registrar a ID do cliente no site para o qual esse fluxo é permitido. Para registrar uma ID de cliente, você deve criar as seguintes configurações do site:

Configuração do site Value
ImplicitGrantFlow/RegisteredClientId Os valores de ID do cliente válidos permitidos para esse site. Os valores devem ser separados por um ponto-e-vírgula e podem conter caracteres alfanuméricos e hífens. O comprimento máximo é de 36 caracteres.

Código de exemplo

Você pode usar o seguinte código de exemplo a seguir para começar a usar a Concessão Implícita do OAuth 2.0 com APIs do Power Pages.

Use o token OAuth do Power Pages com uma API Web externa

Este exemplo é um projeto baseado em ASP.NET e é usado para validar o token de ID emitido pelo Power Pages. O exemplo completo pode ser encontrado aqui: Usar o token OAuth do Power Pages com uma API Web externa.

Exemplo de ponto de extremidade do token

Este exemplo mostra como usar a função getAuthenticationToken para buscar um token de ID usando o ponto de extremidade do token no Power Pages. O exemplo pode ser encontrado aqui: Exemplo do ponto de extremidade do token.