Início de sessão da FileMaker numa REST API com oAuth
Na Alemanha, as API REST são frequentemente utilizadas em muitos sectores para ligar aplicações e sistemas entre si. Estão particularmente difundidas no comércio eletrónico, onde plataformas como Shopware, Magento e WooCommerce utilizam API para integrar produtos, encomendas e informações de clientes com sistemas ERP ou serviços de pagamento como PayPal e Klarna. As API são também amplamente utilizadas no sector financeiro, graças às orientações de open banking e PSD2, permitindo que bancos como o N26 e o Deutsche Bank transfiram dados de forma segura para fornecedores terceiros. No sector da logística, as API apoiam os prestadores de serviços de transporte marítimo, como a DHL e a Hermes, com o acompanhamento dos envios e a automatização dos processos de envio. As API são também utilizadas no sector da saúde para gerir os dados dos doentes e na administração pública para digitalizar os serviços aos cidadãos.
A ligação a um API REST em FileMaker é um caso de uso comum para integrar dados de sistemas externos em bases de dados FileMaker ou enviar dados para esses sistemas. A autenticação para estas APIs REST ocorre frequentemente através de OAuth ou Autenticação baseada em token. Em seguida, encontrará instruções pormenorizadas sobre o modo de funcionamento.
FileMaker ERP com integração
Interface API REST
Mais informações
1. Noções básicas sobre a ligação à API REST
Antes de começarmos com a autenticação, precisamos de chamar a REST API através da função FileMaker Inserir a partir do URL que é utilizado num script. As APIs REST geralmente usam Métodos HTTP como:
OBTER: Recuperar dados da API.POSTEnviar dados para a API.PUTAtualizar os dados existentes.APAGAREliminar dados.
O ponto principal, no entanto, é a Registo na API para poder utilizar estes métodos.
2. HTTP-Basic-Auth
Uma das formas mais simples de autenticação é HTTP-Basic-Auth. O nome de utilizador e a palavra-passe são introduzidos no Autorização-cabeçalho do pedido HTTP.
Exemplo:
Definir variável [ $username ; Valor: "your_username" ]
Definir variável [ $password ; Valor: "sua_palavra_passe" ]
Definir variável [ $url ; Valor}, "https://api.example.com/resource" ]# Combinar o nome de utilizador e a palavra-passe e, em seguida, codificar com base 64
Definir variável [ $encodedAuth ; Valor: Base64Encode ( $username & ":" & $password ) ]# Definir opções cURL
Definir variável [ $cURLOptions ; Valor:
"--header \"Authorisation: Basic " & $encodedAuth & "\"" ]
# Executar consulta API
Inserir a partir de URL [ Seleção ; Diálogo: Off ; Target: $response ; URL: $url ; Opções cURL: $cURLOptions ]
Neste exemplo, o nome de utilizador e a palavra-passe são convertidos numa cadeia de caracteres codificada em Base64 e guardados como um ficheiro Cabeçalho de autorização enviado.
3. Autenticação OAuth 2.0
O OAuth 2.0 é uma estrutura normalizada que fornece um Acesso baseado em token a uma API. Está disponível em vários fluxos:
a) Fluxo de credenciais de cliente
Este fluxo é utilizado quando a aplicação comunica diretamente com a API e não é necessária qualquer interação do utilizador. Aqui, um Token de acesso solicitado pela API.
- Solicitar token de acessoPara obter um token de acesso, um Pedido POST é enviado para o ponto de extremidade do token da API.
Definir variável [ $client_id ; Valor: "your_client_id" ]
Definir variável [ $client_secret ; Valor: "seu_cliente_secreto" ]
Definir variável [ $url ; Valor}, "https://auth.example.com/oauth/token" ]# Definir opções cURL
Definir variável [ $cURLOptions ; Valor:
"--data-urlencode \"client_id=" & $client_id & "\" " &
"--data-urlencode \"client_secret=" & $client_secret & "\" " &
"--data-urlencode \"grant_type=client_credentials\"" ]# Executar consulta API
Inserir a partir do URL [ Seleção ; Diálogo: Off ; Target: $response ; URL: $url ; Opções cURL: $cURLOptions ]Extrair o token # do JSON
Definir variável [ $accessToken ; Value: JSONGetElement ( $response ; "access_token" ) ]
- Pedido de API com o token de acessoUma vez recuperado o token, este pode ser utilizado para autenticação com a API.
Definir variável [ $api_url ; Valor}, "https://api.example.com/protected_resource" ]# Definir opções cURL com o token Bearer
Definir variável [ $cURLOptions ; Valor:
"--header \"Authorisation: Bearer " & $accessToken & "\"" ]
# Executar consulta API
Inserir a partir do URL [ Seleção ; Diálogo: Off ; Target: $api_response ; URL: $api_url ; Opções cURL: $cURLOptions ]
b) Fluxo do código de autorização
Este fluxo é utilizado quando a API pede ao utilizador para se autenticar e conceder acesso à aplicação. O fluxo consiste normalmente nos seguintes passos:
- Redirecionar os utilizadores para a página de início de sessão da APIAbre-se uma janela do browser na qual o utilizador introduz os seus dados de acesso e autoriza a aplicação.
- Receber código de autorizaçãoApós o registo bem sucedido, um Código de autorização é enviado para um URL de redireccionamento.
- Código de autorização de troca para o token de acessoO código de autorização é utilizado para solicitar um token de acesso.
- Pedido de API com o token de acessoTal como no Fluxo de credenciais de cliente o token de acesso é introduzido no
Autorização-cabeçalho do pedido de API.
4. Autenticação baseada em token (chaves API)
Com o Autenticação baseada em token muitas vezes uma estática Chave API que é gerado pela API e é utilizado no Autorização-ou como um parâmetro URL para a API.
Exemplo:
Definir variável [ $api_key ; Valor: "your_api_key" ]
Definir variável [ $url ; Valor: "https://api.example.com/resource" ]# Definir opções cURL
Definir variável [ $cURLOptions ; Valor:
"--header \"Autorização: Portador " & $api_key & "\"" ]# Efetuar a chamada à API
Inserir a partir do URL [ Seleção ; Diálogo: Off ; Destino: $response ; URL: $url ; opções cURL: $cURLOptions ]
Em alternativa, o Chave API são enviados como parâmetros URL:
Definir variável [ $url ; Valor}, "https://api.example.com/resource?api_key=your_api_key" ]
# Executar consulta API
Inserir a partir do URL [ Seleção ; Diálogo: Off ; Destino: $response ; URL: $url ]5. Gestão de tokens
Em muitas APIs, o Token de acesso após um determinado período de tempo. Aqui um Token de atualização pode ser utilizado para obter um novo Token de Acesso sem que o utilizador tenha de se autenticar novamente.
Definir variável [ $refresh_token ; Valor: "your_refresh_token" ]
Definir variável [ $url ; Valor}, "https://auth.example.com/oauth/token" ]
# Definir opções cURL para atualização de token
Definir variável [ $cURLOptions ; Valor:
"--data-urlencode \"refresh_token=" & $refresh_token & "\" " &
"--data-urlencode \"client_id=" & $client_id & "\" " &
"--data-urlencode \"client_secret=" & $client_secret & "\" " &
"--data-urlencode \"grant_type=refresh_token\"" ]
# Executar atualização de fichas
Inserir a partir do URL [ Seleção ; Diálogo: Off ; Destino: $response ; URL: $url ; opções cURL: $cURLOptions ]
# Extrair novo token de acesso da resposta JSON
Definir variável [ $new_accessToken ; ValorJSONGetElement ( $response ; "access_token" ) ]
gFM-Business Código aberto FileMaker Base-ERP
O software para o curso intensivo
Descarregar gratuitamente
Início de sessão OAuth como função personalizada da FileMaker
A fim de Função Personalizada FileMaker que efectua o início de sessão numa REST API e suporta vários métodos de autenticação, tais como Basic Auth, OAuth2 ou chaves API através de parâmetros, podemos utilizar a flexibilidade da FileMaker. A função deve aceitar dinamicamente todos os parâmetros relevantes e gerar o formato correto, dependendo do tipo de autenticação. A função requer a versão gratuita da FileMaker Plugin BaseElementsporque a FileMaker tem a função Inserir a partir do URL não suportado numa função separada.
Ideia básica:
A função personalizada deve ser controlada através de parâmetros que contenham o URL da API, o tipo de autenticação e os dados necessários, como o nome de utilizador, a palavra-passe, o ID do cliente, o segredo do cliente ou o token. A função executará então a autenticação e enviará os dados de início de sessão para a API na forma correta.
Estrutura da função:
Parâmetros:
apiURLURL da API REST: O URL da API REST.authTypeO tipo de autenticação (por exemplo, "Básica", "OAuth2", "API-Key").nome de utilizadorNome de utilizador para a autenticação básica.palavra-passePalavra-passe para a autenticação básica.ID do clienteID de cliente para OAuth2.clientSecretSegredo do cliente para OAuth2.fichaToken da API ou token de acesso OAuth2.extraParamsParâmetros adicionais para o pedido (por exemplotipo de subvençãopara OAuth2).
Exemplo de função personalizada:
/*
Nome da função: API_Login
Parâmetros:
apiURL (Texto) - O URL da API
authType (Texto) - O tipo de autenticação (Básico, OAuth2, chave API)
user (texto) - nome de utilizador (para Basic Auth ou OAuth2)
password (Texto) - Palavra-passe (para Autenticação básica ou OAuth2)
clientID (Texto) - ID do cliente (para OAuth2)
clientSecret (Texto) - Segredo do cliente (para OAuth2)
token (texto) - Token de acesso (para chave API ou OAuth2)
extraParams (Texto) - Parâmetros adicionais (para OAuth2)
Devoluções:
Resposta da API ou mensagem de erro
*/
SetVar ( [
//
Variáveis de configuração
url = apiURL;
authMethod = authType;
basicAuthHeader = "Autorização: Básica " & Base64Encode(user & ":" & password);
tokenAuthHeader = "Autorização: Portador " & token;
// Preparar dados para o fluxo de credenciais de cliente OAuth2
oauthData = "client_id=" & clientID & "&client_secret=" & clientSecret & "&grant_type=client_credentials";
// Definir as opções cURL consoante o tipo de autenticação
cURL_Options =
Se(
authMethod = "Basic"; basicAuthHeader;
authMethod = "OAuth2"; "";
authMethod = "API-Key"; tokenAuthHeader;
""
);
// Enviar pedido em função do método de autenticação
resultado = If(
authMethod = "Basic"; BE_HTTP_GET(url; cURL_Options);
authMethod = "OAuth2"; BE_HTTP_POST(url; oauthData; "Content-Type: application/x-www-form-urlencoded");
authMethod = "API-Key"; BE_HTTP_GET(url; cURL_Options); "Invalid Auth Method" ) ];
// Devolver o resultado da consulta API
resultado
)
Funcionalidade:
- A função verifica que tipo de autenticação é utilizado (
Básico,OAuth2,Chave API). - Dependendo do tipo de autenticação, diferentes Opções cURL gerado:
- Autenticação básicaNome de utilizador e palavra-passe são convertidos para uma cadeia de caracteres codificada em Base64 e armazenados no
Autorização-cabeçalho é enviado. - Fluxo de credenciais de cliente OAuth2O ID do cliente e o segredo do cliente são enviados no corpo do pedido para obter um token de acesso.
- Chave de API ou token de acesso OAuth2A ficha é diretamente reconhecida como
Portador-token é enviado no cabeçalho.
- Autenticação básicaNome de utilizador e palavra-passe são convertidos para uma cadeia de caracteres codificada em Base64 e armazenados no
- A função personalizada utiliza as funções HTTP Get e Put do plugin FileMaker BaseElements para a ligação ao servidor, porque o
Inserir a partir do URL-não é suportada pela FileMaker nas suas próprias funções, mas apenas em scripts.
Exemplo de chamada:
API_Login(
"https://api.example.com/login",
"Básico",
"myUsername",
"myPassword",
"",
"",
""
)
Opções de expansão:
- Tratamento de errosA função pode ser alargada para reconhecer códigos de erro da API e devolver as mensagens correspondentes.
- Renovação do tokenSe um token de acesso expirar, a função pode ser alargada de modo a solicitar automaticamente um novo token.
- Suporte para outros fluxos OAuth2O código poderia ser alargado de modo a que Fluxo do código de autorização e Fluxo de concessão de senhas ser apoiado.
Esta função personalizada oferece uma forma flexível de integrar diferentes mecanismos de autenticação com APIs REST na FileMaker e pode ser facilmente personalizada de acordo com requisitos específicos.
Quatro plataformas FileMaker ERP para processos operacionais optimizados para comprar e alugar.
Pedir informações
Perguntas frequentes sobre FileMaker e REST-API com oAuth
- O que é o OAuth e porque é utilizado para iniciar sessão numa API REST?
- O OAuth é um protocolo padrão aberto que é utilizado para a autorização segura do acesso à API. Permite que aplicações como a FileMaker acedam a recursos protegidos de uma API sem que os utilizadores tenham de introduzir diretamente os seus dados de acesso. O OAuth fornece uma forma segura de autorizar sem partilhar credenciais sensíveis.
- Como é que o fluxo OAuth funciona quando se inicia sessão numa API REST?
- O fluxo OAuth começa normalmente com o FileMaker a enviar um pedido a um servidor de autorização para obter um token. Este token é então utilizado para aceder à REST API. Existem diferentes tipos de fluxo OAuth, mas o mais comum é o fluxo de código de autorização, em que o utilizador é autenticado através de uma página de início de sessão da API e a FileMaker recebe então um token de acesso.
- Que informações são necessárias para ligar a FileMaker a uma REST API através de OAuth?
- Precisa do ID do cliente, do segredo do cliente, do URI de redireccionamento e dos URLs de autorização e de token da API. Normalmente recebe estas informações do fornecedor da API depois de ter registado uma aplicação. A FileMaker utiliza estes dados para se autenticar através do processo OAuth.
- Como posso autenticar a FileMaker com OAuth numa API REST?
- Deve primeiro inicializar o processo OAuth efectuando um pedido de autorização através da FileMaker utilizando a função Inserir a partir de URL. Após uma autorização bem sucedida, receberá um token de acesso que poderá utilizar em outros pedidos de API para aceder a recursos protegidos.
- Como é que guardo o token OAuth na FileMaker para chamadas API posteriores?
- O token recebido é normalmente armazenado num campo na FileMaker para ser utilizado em futuras chamadas API. Os tokens têm frequentemente um tempo de vida limitado e é necessário renová-los regularmente, solicitando um novo token.
- O que acontece quando o token OAuth expira?
- Se o token de acesso expirar, receberá um erro da API (por exemplo, código de estado HTTP 401 "Não autorizado"). Neste caso, deve utilizar o token de atualização para obter um novo token de acesso sem que o utilizador tenha de iniciar sessão novamente. O token de atualização é fornecido durante o processo OAuth original.
- Como é que obtenho um token de atualização na FileMaker?
- Quando passa pelo primeiro fluxo OAuth, recebe não só um token de acesso, mas também um token de atualização. Este token de atualização pode ser guardado no FileMaker. Quando o token de acesso expirar, pode ser solicitado um novo token de acesso utilizando o token de atualização sem voltar a autenticar o utilizador.
- Que precauções de segurança tenho de tomar ao utilizar o OAuth na FileMaker?
- Deve garantir que os dados sensíveis, como o Segredo do Cliente, o Token de Acesso e o Token de Atualização, são armazenados de forma segura. Utilize campos encriptados na FileMaker e proteja a base de dados com os controlos de acesso corretos. Deve também certificar-se de que utiliza HTTPS para o tráfego de dados com a API.
- A FileMaker pode solicitar automaticamente um novo token quando o antigo expira?
- Sim, é possível configurar um script no FileMaker que verifica o código de estado de um pedido API. Se for devolvido um erro 401 devido a um token expirado, o script pode solicitar automaticamente um novo token com o token de atualização guardado e reenviar o pedido.
- O que devo fazer se a REST API utilizar OAuth 2.0, mas a FileMaker apenas suportar autenticação básica?
- Se uma API requerer OAuth 2.0, deve integrar completamente o fluxo OAuth na FileMaker. A autenticação básica não será suficiente. No entanto, pode criar um script na FileMaker que automatiza todo o processo OAuth (pedido de autorização, armazenamento de tokens, renovação de tokens) e assegura que todas as chamadas API são efectuadas com os tokens apropriados.
Resumo
A FileMaker oferece a opção de abordar REST APIs e utilizar diferentes mecanismos de autenticação, tais como OAuth, Autenticação básica e Autenticação baseada em token apoio. Através da utilização de Inserir a partir do URL e Opções cURL pode lidar com processos de autenticação complexos e garantir que as suas soluções FileMaker comunicam sem problemas com sistemas externos. Assim que o login na REST API estiver livre de erros, pode chamar os pontos finais desejados da sua API e processar os dados fornecidos.
