Links überspringen

FileMaker-Anmeldung an eine REST API mit OAuth

FileMaker Tipps und Anleitungen

FileMaker-Anmeldung an einer REST-API mit oAuth

In Deutschland werden REST APIs häufig in vielen Branchen eingesetzt, um Anwendungen und Systeme miteinander zu verbinden. Besonders verbreitet sind sie im E-Commerce, wo Plattformen wie Shopware, Magento und WooCommerce APIs nutzen, um Produkte, Bestellungen und Kundeninformationen mit ERP-Systemen oder Zahlungsdiensten wie PayPal und Klarna zu integrieren. Auch im Finanzwesen sind APIs durch Open Banking und PSD2-Richtlinien weit verbreitet, was Banken wie N26 und die Deutsche Bank ermöglicht, Daten sicher an Drittanbieter zu übermitteln. In der Logistik unterstützen APIs Versanddienstleister wie DHL und Hermes bei der Sendungsverfolgung und der Automatisierung von Versandprozessen. APIs werden zudem im Gesundheitswesen zur Verwaltung von Patientendaten und in der öffentlichen Verwaltung zur Digitalisierung von Bürgerdiensten eingesetzt.

Die Verbindung zu einer REST API in FileMaker ist ein häufiger Anwendungsfall, um Daten von externen Systemen in FileMaker-Datenbanken zu integrieren oder Daten an diese Systeme zu senden. Die Authentifizierung bei diesen REST APIs erfolgt häufig über OAuth oder Token-basierte Authentifizierung. Im folgenden finden Sie eine ausführliche Anleitung, wie dies funktioniert.

 

FileMaker ERP mit integrierter
REST API Schnittstelle

Mehr Informationen
Professional ERP-Software

1. Grundlagen der REST API-Verbindung

Bevor wir mit der Authentifizierung beginnen, müssen wir die REST API über die FileMaker-Funktion Insert from URL ansprechen, die in einem Script verwendet wird. REST APIs verwenden in der Regel HTTP-Methoden wie:

  • GET: Daten von der API abrufen.
  • POST: Daten an die API senden.
  • PUT: Vorhandene Daten aktualisieren.
  • DELETE: Daten löschen.

Der Hauptpunkt ist jedoch die Anmeldung an der API, um diese Methoden nutzen zu können.

2. HTTP-Basic-Auth

Eine der einfachsten Authentifizierungsformen ist HTTP-Basic-Auth. Hierbei wird der Benutzername und das Passwort in den Authorization-Header des HTTP-Requests integriert.

Beispiel:

 
Variable setzen [ $username ; Wert: "your_username" ]
Variable setzen [ $password ; Wert: "your_password" ]
Variable setzen [ $url ; Wert: "https://api.example.com/resource" ]

# Usernamen und Passwort kombinieren, dann base64-encodieren
Variable setzen [ $encodedAuth ; Wert: Base64Encode ( $username & ":" & $password ) ]

# cURL-Optionen definieren
Variable setzen [ $cURLOptions ; Wert:
"--header \"Authorization: Basic " & $encodedAuth & "\"" ]

# API-Abfrage ausführen
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $response ; URL: $url ; cURL-Optionen: $cURLOptions ]

In diesem Beispiel wird der Benutzername und das Passwort in einen Base64-kodierten String umgewandelt und als Authorization-Header gesendet.

3. OAuth 2.0 Authentication

OAuth 2.0 ist ein standardisiertes Framework, das einen Token-basierten Zugriff auf eine API ermöglicht. Es ist in verschiedenen Flows verfügbar:

a) Client Credentials Flow

Dieser Flow wird verwendet, wenn die Anwendung direkt mit der API kommuniziert und keine Benutzerinteraktion erforderlich ist. Hier wird ein Access Token von der API angefordert.

  1. Zugangstoken anfordern: Um ein Zugangstoken zu erhalten, wird ein POST-Request an den Token-Endpunkt der API gesendet.
 

Variable setzen [ $client_id ; Wert: "your_client_id" ]
Variable setzen [ $client_secret ; Wert: "your_client_secret" ]
Variable setzen [ $url ; Wert: "https://auth.example.com/oauth/token" ]
# cURL-Optionen definieren
Set Variable [ $cURLOptions ; Wert:
"--data-urlencode \"client_id=" & $client_id & "\" " &
"--data-urlencode \"client_secret=" & $client_secret & "\" " &
"--data-urlencode \"grant_type=client_credentials\"" ]
# API-Abfrage ausführen
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $response ; URL: $url ; cURL options: $cURLOptions ]
# Token aus dem JSON extrahieren
Variable setzen [ $accessToken ; Wert: JSONGetElement ( $response ; "access_token" ) ]

  1. API-Anfrage mit dem Zugangstoken: Sobald das Token abgerufen wurde, kann es für die Authentifizierung bei der API verwendet werden.

Variable setzen [ $api_url ; Wert: "https://api.example.com/protected_resource" ]
# cURL-Optionen mit Bearer token definieren
Variable setzen [ $cURLOptions ; Wert:
"--header \"Authorization: Bearer " & $accessToken & "\"" ]
API-Abfrage ausführen
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $api_response ; URL: $api_url ; cURL-Optionen: $cURLOptions ]

b) Authorization Code Flow

Dieser Flow wird verwendet, wenn die API den Benutzer auffordert, sich zu authentifizieren und der Anwendung Zugriff zu gewähren. Der Ablauf besteht in der Regel aus den folgenden Schritten:

  1. Benutzer zur Login-Seite der API umleiten: Ein Browserfenster wird geöffnet, in dem der Benutzer seine Zugangsdaten eingibt und der Anwendung die Berechtigung erteilt.
  2. Authorization Code empfangen: Nach erfolgreicher Anmeldung wird ein Authorization Code an eine Umleitungs-URL gesendet.
  3. Authorization Code gegen Access Token eintauschen: Mit dem Authorization Code wird ein Access Token angefordert.
  4. API-Anfrage mit dem Access Token: Wie im Client Credentials Flow wird das Access Token in den Authorization-Header des API-Requests eingebunden.

4. Token-basierte Authentifizierung (API-Keys)

Bei der Token-basierten Authentifizierung wird häufig ein statischer API-Schlüssel verwendet, der von der API generiert wird und der im Authorization-Header oder als URL-Parameter an die API gesendet wird.

Beispiel:

Variable setzen [ $api_key ; Wert: "your_api_key" ]
Variable setzen [ $url ; Wert: "https://api.example.com/resource" ]# Define cURL options
Variable setzen [ $cURLOptions ; Wert:
"--header \"Authorization: Bearer " & $api_key & "\"" ]# Perform the API call
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $response ; URL: $url ; cURL-Optionen: $cURLOptions ]

Alternativ kann der API-Key als URL-Parameter gesendet werden:

Variable setzen [ $url ; Wert: "https://api.example.com/resource?api_key=your_api_key" ]
API-Abfrage ausführen
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $response ; URL: $url ]

5. Verwaltung von Tokens

In vielen APIs läuft das Access Token nach einer bestimmten Zeit ab. Hierbei muss ein Refresh Token verwendet werden, um ein neues Access Token zu erhalten, ohne dass sich der Benutzer erneut authentifizieren muss.

Variable setzen [ $refresh_token ; Wert: "your_refresh_token" ]
Variable setzen [ $url ; Wert: "https://auth.example.com/oauth/token" ]
# cURL-Optionen für Token-Refresh definieren
Variable setzen [ $cURLOptions ; Wert:
"--data-urlencode \"refresh_token=" & $refresh_token & "\" " &
"--data-urlencode \"client_id=" & $client_id & "\" " &
"--data-urlencode \"client_secret=" & $client_secret & "\" " &
"--data-urlencode \"grant_type=refresh_token\"" ]
# Token Refresh ausführen
Aus URL einfügen [ Auswahl ; Dialog: Aus ; Ziel: $response ; URL: $url ; cURL-Optionen: $cURLOptions ]
# Neuen Access-Token aus der JSON-Antwort extrahieren
Variable setzen [ $new_accessToken ; Wert: JSONGetElement ( $response ; "access_token" ) ]

gFM-Business Open Source FileMaker Basis-ERP

Die Software zum Crashkurs

Gratis herunterladen
Open Source ERP auf Basis von Claris FileMaker

OAuth-Anmeldung als FileMaker Custom Function

Um eine FileMaker Custom Function zu programmieren, die die Anmeldung an einer REST API durchführt und dabei über Parameter verschiedene Authentifizierungsmethoden wie Basic Auth, OAuth2, oder API-Keys unterstützt, können wir die Flexibilität von FileMaker nutzen. Die Funktion sollte dynamisch alle relevanten Parameter entgegennehmen und je nach Authentifizierungstyp das richtige Format erzeugen. Die Funktion benötigt das kostenlose FileMaker BaseElements Plugin, weil FileMaker die Funktion Aus URL Einfügen nicht in einer eigenen Funktion unterstützt.

Grundidee:

Die Custom Function soll über Parameter gesteuert werden, welche die API-URL, den Authentifizierungstyp und die notwendigen Daten wie Benutzername, Passwort, Client-ID, Client-Secret oder Token enthalten. Die Funktion wird dann die Authentifizierung durchführen und die Anmeldedaten in der richtigen Form an die API senden.

Aufbau der Funktion:

Parameter:

  • apiURL: Die URL der REST API.
  • authType: Der Typ der Authentifizierung (z.B. „Basic“, „OAuth2“, „API-Key“).
  • username: Benutzername für Basic Auth.
  • password: Passwort für Basic Auth.
  • clientID: Client-ID für OAuth2.
  • clientSecret: Client-Secret für OAuth2.
  • token: API-Token oder OAuth2-Access-Token.
  • extraParams: Zusätzliche Parameter für die Anfrage (z.B. grant_type für OAuth2).

Beispiel der Custom Function:

/*
Funktionsname: API_Login
Parameter:
apiURL (Text) - Die URL der API
authType (Text) - Der Authentifizierungstyp (Basic, OAuth2, API-Key)
user (Text) - Benutzername (für Basic Auth oder OAuth2)
password (Text) - Passwort (für Basic Auth oder OAuth2)
clientID (Text) - Client ID (für OAuth2)
clientSecret (Text) - Client Secret (für OAuth2)
token (Text) - Access Token (für API-Key oder OAuth2)
extraParams (Text) - Zusätzliche Parameter (für OAuth2)
Gibt zurück:
Response von der API oder Fehlernachricht
*/

SetzeVar ( [
//

Konfigurationsvariablen
url = apiURL;
authMethod = authType;
basicAuthHeader = "Authorization: Basic " & Base64Encode(user & ":" & password);
tokenAuthHeader = "Authorization: Bearer " & token;

// Daten für OAuth2 Client Credentials Flow vorbereiten
oauthData = "client_id=" & clientID & "&client_secret=" & clientSecret & "&grant_type=client_credentials";

// Setze die cURL-Optionen je nach Authentifizierungstyp
cURL_Options =
Falls(
   authMethod = "Basic"; basicAuthHeader;
   authMethod = "OAuth2"; "";
   authMethod = "API-Key"; tokenAuthHeader;
   ""
);

// Anfrage senden je nach Authentifizierungsmethode
result = Falls(
   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" ) ];

// Ergebnis der API-Abfrage zurückgeben
result
)

Funktionsweise:

  1. Die Funktion prüft, welcher Authentifizierungstyp verwendet wird (Basic, OAuth2, API-Key).
  2. Je nach Authentifizierungstyp werden unterschiedliche cURL-Optionen erzeugt:
    • Basic Auth: Benutzername und Passwort werden zu einem Base64-verschlüsselten String umgewandelt und im Authorization-Header gesendet.
    • OAuth2 Client Credentials Flow: Client-ID und Client-Secret werden im Body der Anfrage gesendet, um ein Access-Token zu erhalten.
    • API-Key oder OAuth2 Access-Token: Das Token wird direkt als Bearer-Token im Header gesendet.
  3. Die Custom Function verwendet für die Serververbindung HTTP-Get- und -Put-Funktionen des FileMaker BaseElements Plugin, weil die Aus URL einfügen-Funktion von FileMaker in eigenen Funktionen nicht unterstützt wird, sondern nur in Scripten.

Beispielaufruf:

API_Login(
"https://api.example.com/login",
"Basic",
"myUsername",
"myPassword",
"",
"",
""
)

Erweiterungsmöglichkeiten:

  • Fehlerbehandlung: Die Funktion kann erweitert werden, um Fehlercodes von der API zu erkennen und entsprechende Nachrichten zurückzugeben.
  • Token-Erneuerung: Wenn ein Access-Token abläuft, kann die Funktion so erweitert werden, dass sie automatisch ein neues Token anfordert.
  • Unterstützung weiterer OAuth2-Flows: Der Code könnte so erweitert werden, dass auch Authorization Code Flow und Password Grant Flow unterstützt werden.

Diese Custom Function bietet eine flexible Möglichkeit, verschiedene Authentifizierungsmechanismen mit REST APIs in FileMaker zu integrieren, und kann leicht an spezifische Anforderungen angepasst werden.

Vier FileMaker ERP-Plattformen für optimale Betriebsprozesse zum Kaufen und Mieten.

Alle Kauflizenzen
Professional ERP-Software

Häufig gestellte Fragen zu FileMaker und REST-API mit oAuth

  • Was ist OAuth und warum wird es für die Anmeldung an eine REST-API verwendet?
    • OAuth ist ein offenes Standardprotokoll, das für die sichere Autorisierung von API-Zugriffen verwendet wird. Es ermöglicht es Anwendungen wie FileMaker, auf geschützte Ressourcen einer API zuzugreifen, ohne dass Benutzer ihre Zugangsdaten direkt eingeben müssen. OAuth bietet eine sichere Möglichkeit zur Autorisierung, ohne die sensiblen Anmeldeinformationen weiterzugeben.
  • Wie funktioniert der OAuth-Flow bei der Anmeldung an eine REST-API?
    • Der OAuth-Flow beginnt in der Regel damit, dass FileMaker eine Anfrage an einen Autorisierungsserver sendet, um ein Token zu erhalten. Dieses Token wird dann verwendet, um auf die REST-API zuzugreifen. Es gibt verschiedene OAuth-Flow-Typen, aber der häufigste ist der Authorization Code Flow, bei dem der Benutzer über eine Login-Seite der API authentifiziert wird und FileMaker dann ein Zugriffstoken erhält.
  • Welche Informationen benötige ich, um FileMaker mit einer REST-API via OAuth zu verbinden?
    • Sie benötigen die Client-ID, Client-Secret, Redirect-URI und die Authorization- und Token-URLs der API. Diese Informationen erhalten Sie in der Regel vom API-Anbieter, nachdem Sie eine Anwendung registriert haben. FileMaker verwendet diese Daten, um sich über den OAuth-Prozess zu authentifizieren.
  • Wie authentifiziere ich FileMaker mit OAuth gegenüber einer REST-API?
    • Zuerst müssen Sie den OAuth-Prozess initialisieren, indem Sie eine Autorisierungsanfrage über FileMaker mit der Insert from URL-Funktion stellen. Nach erfolgreicher Autorisierung erhalten Sie ein Zugriffstoken, das Sie in weiteren API-Anfragen verwenden können, um auf geschützte Ressourcen zuzugreifen.
  • Wie speichere ich das OAuth-Token in FileMaker für spätere API-Aufrufe?
    • Das erhaltene Token wird in der Regel in einem Feld in FileMaker gespeichert, um es für zukünftige API-Aufrufe zu verwenden. Tokens haben oft eine begrenzte Lebensdauer, und Sie müssen sie regelmäßig erneuern, indem Sie ein neues Token anfordern.
  • Was passiert, wenn das OAuth-Token abläuft?
    • Wenn das Zugriffstoken abläuft, erhalten Sie von der API einen Fehler (z. B. HTTP-Statuscode 401 „Unauthorized“). In diesem Fall müssen Sie den Refresh Token verwenden, um ein neues Zugriffstoken zu erhalten, ohne dass der Benutzer sich erneut anmelden muss. Der Refresh-Token wird während des ursprünglichen OAuth-Prozesses bereitgestellt.
  • Wie erhalte ich einen Refresh Token in FileMaker?
    • Wenn Sie den ersten OAuth-Flow durchlaufen, erhalten Sie nicht nur ein Zugriffstoken, sondern auch einen Refresh Token. Dieser Refresh Token kann in FileMaker gespeichert werden. Sobald das Zugriffstoken abläuft, kann ein neues Zugriffstoken angefordert werden, indem der Refresh Token verwendet wird, ohne den Benutzer erneut zu authentifizieren.
  • Welche Sicherheitsvorkehrungen muss ich bei der Verwendung von OAuth in FileMaker beachten?
    • Sie sollten darauf achten, dass sensible Daten wie Client Secret, Access Token und Refresh Token sicher gespeichert werden. Verwenden Sie verschlüsselte Felder in FileMaker und sichern Sie die Datenbank mit den richtigen Zugriffskontrollen. Zudem sollten Sie sicherstellen, dass Sie HTTPS für den Datenverkehr mit der API verwenden.
  • Kann FileMaker automatisch ein neues Token anfordern, wenn das alte abgelaufen ist?
    • Ja, Sie können in FileMaker ein Skript einrichten, das den Statuscode einer API-Anfrage überprüft. Wenn ein 401-Fehler aufgrund eines abgelaufenen Tokens zurückgegeben wird, kann das Skript automatisch einen neuen Token mit dem gespeicherten Refresh Token anfordern und die Anfrage erneut senden.
  • Was mache ich, wenn die REST-API OAuth 2.0 verwendet, aber FileMaker unterstützt nur grundlegende Authentifizierung?
    • Wenn eine API OAuth 2.0 erfordert, müssen Sie den OAuth-Flow vollständig in FileMaker integrieren. Die grundlegende Authentifizierung wird nicht ausreichen. Sie können jedoch ein Skript in FileMaker erstellen, das den gesamten OAuth-Prozess (Autorisierungsanfrage, Token-Speicherung, Token-Erneuerung) automatisiert und sicherstellt, dass alle API-Aufrufe mit den entsprechenden Tokens erfolgen.

Zusammenfassung

FileMaker bietet die Möglichkeit, REST-APIs anzusprechen und unterschiedliche Authentifizierungsmechanismen wie OAuthBasic Auth und Token-basierte Authentifizierung zu unterstützen. Durch die Nutzung von Aus URL einfügen und cURL-Optionen können Sie komplexe Authentifizierungsprozesse abwickeln und sicherstellen, dass Ihre FileMaker-Lösungen nahtlos mit externen Systemen kommunizieren. Sobald die Anmeldung an der REST API fehlerfrei erfolgt, können Sie die gewünschten Endpunkte Ihrer API aufrufen und die gelieferten Daten weiterverarbeiten.

Diese Seite teilen:

ERP-Software so flexibel wie Ihr Unternehmen.
Wir beraten Sie gern.

Anpassbare ERP-Software für Mac, Windows und iOS.

Sie sind hier: FileMaker-Anmeldung an eine REST API mit OAuth