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:
Vá para o aplicativo do Gerenciamento de Portal e, na seção Site, selecione Configurações do Site.
Para criar uma configuração, selecione Novo.
Para editar uma configuração existente, selecione CustomCertificates/ImplicitGrantflow.
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.
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": "aaaa0000-bb11-2222-33cc-444444dddddd" }
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.