Inicio de sesión de FileMaker en una API REST con oAuth
En Alemania, las API REST se utilizan con frecuencia en muchos sectores para conectar aplicaciones y sistemas entre sí. Están especialmente extendidas en el comercio electrónico, donde plataformas como Shopware, Magento y WooCommerce utilizan API para integrar productos, pedidos e información de clientes con sistemas ERP o servicios de pago como PayPal y Klarna. Las API también se utilizan ampliamente en el sector financiero gracias a la banca abierta y las directrices PSD2, lo que permite a bancos como N26 y Deutsche Bank transferir datos de forma segura a terceros proveedores. En logística, las API ayudan a proveedores de servicios de envío como DHL y Hermes con el seguimiento de los envíos y la automatización de los procesos de envío. Las API también se utilizan en el sector sanitario para gestionar los datos de los pacientes y en la administración pública para digitalizar los servicios al ciudadano.
La conexión a un API REST en FileMaker es un caso de uso común para integrar datos de sistemas externos en bases de datos de FileMaker o para enviar datos a estos sistemas. La autenticación para estas API REST suele realizarse mediante OAuth o Autenticación basada en token. A continuación encontrará instrucciones detalladas sobre cómo funciona.
FileMaker ERP con
Interfaz API REST
Más información
1. Conceptos básicos de la conexión API REST
Antes de empezar con la autenticación, tenemos que llamar a la API REST mediante la función de FileMaker Insertar desde URL que se utiliza en un script. Las API REST suelen utilizar Métodos HTTP cómo:
GETRecuperar datos de la API.POSTEnviar datos a la API.PUTActualizar los datos existentes.BORRARBorrar datos.
Sin embargo, el punto principal es la Inscripción en la API para poder utilizar estos métodos.
2. HTTP-Basic-Auth
Una de las formas más sencillas de autenticación es HTTP-Basic-Auth. El nombre de usuario y la contraseña se introducen en Autorización-cabecera de la petición HTTP.
Ejemplo:
Establecer variable [ 1TP4Nombre_usuario ; Valor: "tu_nombre_usuario" ]
Establecer variable [ 1TP4Contraseña ; Valor: "tu_contraseña" ]
Establecer variable [ $url ; Valor}, "https://api.example.com/resource" ]# Combine el nombre de usuario y la contraseña y, a continuación, codifíquelos en base64.
Establecer variable [ $encodedAuth ; Valor: Base64Encode ( $username & ":" & $password ) ]# Definir opciones cURL
Establecer variable [ $cURLOptions ; Valor:
"--header \"Authorisation: Basic " & $encodedAuth & "\"" ]
# Ejecutar consulta API
Insertar desde URL [ Selección ; Diálogo: Off ; Objetivo: $response ; URL: $url ; Opciones cURL: $cURLOptions ]
En este ejemplo, el nombre de usuario y la contraseña se convierten en una cadena codificada en Base64 y se guardan como un archivo Cabecera de autorización enviado.
3. Autenticación OAuth 2.0
OAuth 2.0 es un marco estandarizado que proporciona un Acceso mediante token a una API. Está disponible en varios flujos:
a) Flujo de credenciales de cliente
Este flujo se utiliza cuando la aplicación se comunica directamente con la API y no es necesaria la interacción del usuario. En este caso se utiliza un Ficha de acceso solicitado por la API.
- Solicitar token de accesoPara obtener un token de acceso, se necesita un Solicitud POST se envía al token endpoint de la API.
Establecer variable [ $client_id ; Valor: "your_client_id" ]
Establecer variable [ $client_secret ; Valor: "su_secreto_cliente" ]
Establecer variable [ $url ; Valor}, "https://auth.example.com/oauth/token" ]# Definir opciones cURL
Establecer variable [ $cURLOptions ; Valor:
"--data-urlencode \"client_id=" & $client_id & "\" " &
"--data-urlencode \"client_secret=" & $client_secret & "\" " &
"--data-urlencode \"grant_type=client_credentials\"" ]# Ejecutar consulta API
Insertar desde URL [ Selección ; Diálogo: Off ; Target: $response ; URL: $url ; Opciones cURL: $cURLOptions ]Extraer el token # del JSON
Establecer variable [ $accessToken ; Value: JSONGetElement ( $response ; "access_token" ) ]
- Solicitud API con el token de accesoUna vez recuperado el token, puede utilizarse para autenticarse con la API.
Establecer variable [ $api_url ; Valor}, "https://api.example.com/protected_resource" ]# Definir opciones cURL con token de portador
Establecer variable [ $cURLOptions ; Valor:
"--header \"Authorisation: Bearer " & $accessToken & "\"" ]
# Ejecutar consulta API
Insertar desde URL [ Selección Diálogo: Off ; Target: $api_response ; URL: $api_url ; Opciones cURL: $cURLOptions ]
b) Flujo de códigos de autorización
Este flujo se utiliza cuando la API solicita al usuario que se autentique y conceda acceso a la aplicación. El flujo suele constar de los siguientes pasos:
- Redirigir a los usuarios a la página de inicio de sesión de la APISe abre una ventana del navegador en la que el usuario introduce sus datos de acceso y autoriza la aplicación.
- Recibir código de autorizaciónTras el registro con éxito Código de autorización se envía a una URL de redirección.
- Código de autorización de intercambio para el token de accesoEl código de autorización se utiliza para solicitar un token de acceso.
- Solicitud API con el token de accesoComo en el Flujo de credenciales de cliente el token de acceso se introduce en el
Autorización-cabecera de la solicitud API.
4. Autenticación basada en tokens (claves API)
Con el Autenticación basada en token a menudo una estática Clave API que es generado por la API y se utiliza en la aplicación Autorización-o como parámetro URL de la API.
Ejemplo:
Establecer variable [ $api_key ; Valor: "su_api_key" ]
Establecer variable [ $url ; Valor: "https://api.example.com/resource" # Definir opciones cURL
Establecer variable [ $cURLOptions ; Valor:
"--header \"Authorisation: Bearer " & $api_key & "\"" # Realizar la llamada a la API
Insertar desde URL [ Selección ; Diálogo: Off ; Destino: $response ; URL: $url ; opciones cURL: $cURLOptions ]
Alternativamente, el Clave API se envían como parámetros de URL:
Establecer variable [ $url ; Valor}, "https://api.example.com/resource?api_key=your_api_key" ]
# Ejecutar consulta API
Insertar desde URL [ Selección ; Diálogo: Off ; Destino: $response ; URL: $url ]5. Gestión de fichas
En muchas API, la función Ficha de acceso después de cierto tiempo. Aquí a Actualizar ficha puede utilizarse para obtener un nuevo código de acceso sin que el usuario tenga que autenticarse de nuevo.
Establecer variable [ $refresh_token ; Valor: "your_refresh_token" ]
Establecer variable [ $url ; Valor}, "https://auth.example.com/oauth/token" ]
# Definir opciones cURL para la actualización de tokens
Establecer variable [ $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"" ]
# Ejecutar actualización de token
Insertar desde URL [ Selección ; Diálogo: Off ; Destino: $response ; URL: $url ; opciones cURL: $cURLOptions ]
# Extraer el nuevo token de acceso de la respuesta JSON
Establecer variable [ $new_accessToken ; ValorJSONGetElement ( $response ; "access_token" ) ]
gFM-Business Open Source FileMaker Basis-ERP
El software para el curso intensivo
Descargar gratis
Inicio de sesión OAuth como función personalizada de FileMaker
Con el fin de Función personalizada de FileMaker que realiza el inicio de sesión en una API REST y admite varios métodos de autenticación, como Basic Auth, OAuth2 o claves de API mediante parámetros, podemos utilizar la flexibilidad de FileMaker. La función debe aceptar dinámicamente todos los parámetros relevantes y generar el formato correcto en función del tipo de autenticación. La función requiere el programa gratuito FileMaker Plugin BaseElementsporque FileMaker dispone de la función Insertar desde URL no se admite en una función separada.
Idea básica:
La función personalizada debe controlarse mediante parámetros que contengan la URL de la API, el tipo de autenticación y los datos necesarios, como el nombre de usuario, la contraseña, el ID de cliente, el secreto de cliente o el token. A continuación, la función realizará la autenticación y enviará los datos de inicio de sesión a la API de la forma correcta.
Estructura de la función:
Parámetros:
apiURLURL de la API REST.authTypeEl tipo de autenticación (por ejemplo, "Basic", "OAuth2", "API-Key").nombre de usuarioNombre de usuario para la autenticación básica.contraseñaContraseña para la autenticación básicaclientIDID de cliente para OAuth2.clientSecretSecreto de cliente para OAuth2.fichatoken de API o token de acceso OAuth2.extraParamsParámetros adicionales para la solicitud (por ejemplotipo_concesiónpara OAuth2).
Ejemplo de función personalizada:
/*
Nombre de la función: API_Login
Parámetros:
apiURL (Texto) - La URL de la API
authType (Texto) - Tipo de autenticación (Basic, OAuth2, API key)
user (text) - nombre de usuario (para Basic Auth u OAuth2)
password (Texto) - Contraseña (para Basic Auth u OAuth2)
clientID (Texto) - ID de cliente (para OAuth2)
clientSecret (Texto) - Secreto del cliente (para OAuth2)
token (texto) - Token de acceso (para clave API u OAuth2)
extraParams (Texto) - Parámetros adicionales (para OAuth2)
Devoluciones:
Respuesta de la API o mensaje de error
*/
SetVar ( [
//
Variables de configuración
url = apiURL;
authMethod = authType;
basicAuthHeader = "Authorisation: Basic " & Base64Encode(user & ":" & password);
tokenAuthHeader = "Autorización: Portador " & token;
// Preparar los datos para el flujo de credenciales de cliente OAuth2
oauthData = "client_id=" & clientID & "&client_secret=" & clientSecret & "&grant_type=client_credentials";
// Configura las opciones de cURL en función del tipo de autenticación
cURL_Options =
Si(
authMethod = "Basic"; basicAuthHeader;
authMethod = "OAuth2"; "";
authMethod = "API-Key"; tokenAuthHeader;
""
);
// Enviar solicitud dependiendo del método de autenticación
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" ) ];
// Devuelve el resultado de la consulta a la API
resultado
)
Funcionalidad:
- La función comprueba qué tipo de autenticación se utiliza (
Básico,OAuth2,Clave API). - En función del tipo de autenticación, se aplicarán diferentes Opciones de cURL generados:
- Autenticación básicaEl nombre de usuario y la contraseña se convierten en una cadena codificada en Base64 y se almacenan en el archivo
Autorización-se envía el encabezamiento. - Flujo de credenciales de cliente OAuth2El ID de cliente y el secreto de cliente se envían en el cuerpo de la solicitud para obtener un token de acceso.
- Clave API o token de acceso OAuth2La ficha se reconoce directamente como
Portador-token se envía en la cabecera.
- Autenticación básicaEl nombre de usuario y la contraseña se convierten en una cadena codificada en Base64 y se almacenan en el archivo
- La función personalizada utiliza las funciones HTTP get y put del plugin FileMaker BaseElements para la conexión con el servidor, ya que la función
Insertar desde URL-no es compatible con las funciones propias de FileMaker, sino sólo con los guiones.
Ejemplo de llamada:
API_Inicio de sesión(
"https://api.example.com/login",
"Básico",
"miNombreDeUsuario",
"miContraseña",
"",
"",
""
)
Opciones de ampliación:
- Tratamiento de erroresLa función puede ampliarse para reconocer códigos de error de la API y devolver los mensajes correspondientes.
- Renovación de fichasSi un token de acceso caduca, la función puede ampliarse para que solicite automáticamente un nuevo token.
- Soporte para más flujos OAuth2El código podría ampliarse para que Flujo de códigos de autorización y Flujo de concesión de contraseñas ser apoyado.
Esta función personalizada ofrece una forma flexible de integrar distintos mecanismos de autenticación con API REST en FileMaker y se puede personalizar fácilmente según requisitos específicos.
Cuatro plataformas ERP FileMaker para optimizar los procesos operativos en compra y alquiler.
Solicitar información
Preguntas frecuentes sobre FileMaker y REST-API con oAuth
- ¿Qué es OAuth y por qué se utiliza para iniciar sesión en una API REST?
- OAuth es un protocolo estándar abierto que se utiliza para la autorización segura del acceso a la API. Permite que aplicaciones como FileMaker accedan a recursos protegidos de una API sin que los usuarios tengan que introducir directamente sus datos de acceso. OAuth proporciona una forma segura de autorizar sin compartir credenciales confidenciales.
- ¿Cómo funciona el flujo OAuth al iniciar sesión en una API REST?
- El flujo de OAuth suele comenzar con FileMaker enviando una solicitud a un servidor de autorización para obtener un token. A continuación, este token se utiliza para acceder a la API REST. Existen diferentes tipos de flujo OAuth, pero el más común es el flujo de código de autorización, en el que el usuario se autentica a través de una página de inicio de sesión de la API y FileMaker recibe entonces un token de acceso.
- ¿Qué información necesito para conectar FileMaker a una API REST mediante OAuth?
- Necesita el ID de cliente, el secreto de cliente, el URI de redirección y las URL de autorización y token de la API. Normalmente, recibirá esta información del proveedor de la API después de haber registrado una aplicación. FileMaker utiliza estos datos para autenticarse mediante el proceso OAuth.
- ¿Cómo autentico FileMaker con OAuth en una API REST?
- En primer lugar, debe iniciar el proceso OAuth realizando una solicitud de autorización a través de FileMaker mediante la función Insertar desde URL. Una vez obtenida la autorización, recibirá un token de acceso que podrá utilizar en otras solicitudes de API para acceder a los recursos protegidos.
- ¿Cómo guardo el token OAuth en FileMaker para posteriores llamadas a la API?
- El token recibido se suele almacenar en un campo de FileMaker para utilizarlo en futuras llamadas a la API. Los tokens suelen tener una vida útil limitada y es necesario renovarlos periódicamente solicitando un nuevo token.
- ¿Qué ocurre cuando caduca el token de OAuth?
- Si el token de acceso caduca, recibirá un error de la API (por ejemplo, código de estado HTTP 401 "No autorizado"). En este caso, debe utilizar el token de actualización para obtener un nuevo token de acceso sin que el usuario tenga que volver a iniciar sesión. El token de actualización se proporciona durante el proceso OAuth original.
- ¿Cómo obtengo un token de actualización en FileMaker?
- Cuando se pasa por el primer flujo de OAuth, no sólo se recibe un token de acceso, sino también un token de actualización. Este token de actualización se puede guardar en FileMaker. Una vez que el token de acceso caduca, se puede solicitar un nuevo token de acceso utilizando el token de actualización sin necesidad de volver a autenticar al usuario.
- ¿Qué precauciones de seguridad debo tomar al utilizar OAuth en FileMaker?
- Debe asegurarse de que los datos confidenciales como Client Secret, Access Token y Refresh Token se almacenan de forma segura. Utilice campos cifrados en FileMaker y proteja la base de datos con los controles de acceso adecuados. También debe asegurarse de utilizar HTTPS para el tráfico de datos con la API.
- ¿Puede FileMaker solicitar automáticamente un nuevo token cuando caduque el antiguo?
- Sí, puede configurar un guión en FileMaker que compruebe el código de estado de una solicitud de API. Si se devuelve un error 401 debido a un token caducado, el guion puede solicitar automáticamente un nuevo token con el token de actualización guardado y volver a enviar la solicitud.
- ¿Qué hago si la API REST utiliza OAuth 2.0, pero FileMaker sólo admite la autenticación básica?
- Si una API requiere OAuth 2.0, debe integrar completamente el flujo de OAuth en FileMaker. La autenticación básica no será suficiente. Sin embargo, puede crear un guión en FileMaker que automatice todo el proceso de OAuth (solicitud de autorización, almacenamiento de tokens, renovación de tokens) y garantice que todas las llamadas a la API se realizan con los tokens adecuados.
Resumen
FileMaker ofrece la opción de dirigirse a las API REST y utilizar diferentes mecanismos de autenticación como OAuth, Autenticación básica y Autenticación basada en token apoyo. Mediante el uso de Insertar desde URL y Opciones de cURL puede gestionar procesos de autenticación complejos y garantizar que sus soluciones FileMaker se comunican sin problemas con sistemas externos. En cuanto el inicio de sesión en la API REST esté libre de errores, podrá llamar a los endpoints deseados de su API y procesar los datos suministrados.
