Início de sessão da FileMaker numa REST API com oAuth
Atenção! Este exemplo é um conceito que não garante que funcione exatamente como mostrado. O artigo não é atualizado regularmente, pelo que pode estar desatualizado em relação às versões de software.
Não oferecemos suporte para os nossos exemplos publicados.
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.
