Implementieren eines Application Integration Servers

Im Folgenen wird beschrieben, wie man einen eigenen Application Integration Server implementiert um Benutzer aus Quellen zu synchronisieren, welche nicht nativ von MailStore unterstützt werden. Dies kann nahezu eine beliebige Benutzerdatenbank sein, auf welche durch eine Programmier- oder Skriptsprache zugegriffen werden kann, wie z.B. SQL-Server Datenbanken oder einfache Textdateien. Der Verwendung eines Application Integration Servers ist unter Application Integration beschrieben

Ein Application Integration Server kann in einer beliebigen Programmier- oder Skriptsprache geschrieben sein. Er muss entweder einen eigenen HTTP-Server bereitstellen oder über einen existierenden HTTP-Server erreichbar sein.

Benutzer synchronisieren

Der Application Integration Server muss den folgenden Parameter per HTTP-POST-Anfrage akzeptieren um die Synchronisierung zu beginnen.

Name Description
cmd Zum Synchronisieren von Benutzern muss der cmd-Parameter den Wert list haben.

Die zurückgelieferte HTTP-Antwort muss aus gültigen, JSON-formatierten Daten bestehen. Werden Benutzer synchronisiert, wird die folgende Datenstruktur für jedes Objekt erwartet. Mehrere Benutzer müssen als ein Array von JSON-Objekten zurückgeliefert werden.

Name Type
userName string
distinguishedName string (Optional)
fullName string (Optional)
emailAddresses array (Optional)

Beispiel

HTTP Anfrage

POST /mailstore-integration/index.php HTTP/1.1
Authorization: Basic bWFpbHN0b3JlQGV4YW1wbGUudGVzdDpQYXNzdzByZA==
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Host: mail.example.test
Accept: */*
Content-Length: 8
Content-Type: application/x-www-form-urlencoded
 
cmd=list

HTTP Antwort

HTTP/1.1 200 OK
X-Powered-By: PHP/5.4.4-14+deb7u5
Content-Type: text/json; charset=utf8
Date: Fri, 13 Dec 2013 14:20:27 GMT
Server: lighttpd/1.4.31
Content-Length: 23812
Accept-Ranges: none
Connection: Keep-Alive

[
  {
    "userName": "john.doe",
    "distinguishedName": "UID=john.doe,DC=example,DC=com",
    "fullName": "john.doe",
    "emailAddresses": [
      "[email protected]",
      "[email protected]"
    ]
  },
  {
    "userName": "jane.doe",
    "distinguishedName": "UID=jane.doe,DC=example,DC=com",
    "fullName": "jane.doe",
    "emailAddresses": [
      "[email protected]",
      "[email protected]"
    ]
  }
]

Benutzer authentifizieren

Der Application Integration Server muss die folgenden Parameter per HTTP-POST-Anfrage akzeptieren um Benutzer zu authentifizieren.

Name Description
cmd For authenticating users the cmd parameter must be set to auth.
user The user parameter contains the user name to be authenticated.
pass The pass parameter contains the password to be verified.

Die zurückgelieferte HTTP-Antwort muss aus gültigen, JSON-formatierten Daten bestehen. Werden Benutzer authentifizier, wird die folgende Datenstruktur für jedes Objekt erwartet. Mehrere Benutzer müssen als ein Array von JSON-Objekten zurückgeliefert werden.

Name Type
succeeded boolean

Beispiele

HTTP Anfrage

POST /mailstore-integration/index.php HTTP/1.1
Authorization: Basic bWFpbHN0b3JlQGV4YW1wbGUudGVzdDpQYXNzdzByZA==
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Host: mail.example.test
Accept: */*
Content-Length: 8
Content-Type: application/x-www-form-urlencoded

cmd=auth&user=john.doe&pass=Passw0rd

HTTP Antwort - Authentifizierung erfolgreich

HTTP/1.1 200 OK
X-Powered-By: PHP/5.4.4-14+deb7u5
Content-Type: text/json; charset=utf8
Date: Fri, 13 Dec 2013 14:20:27 GMT
Server: lighttpd/1.4.31
Content-Length: 21
Accept-Ranges: none
Connection: Keep-Alive

{
  succeeded: true
}

HTTP Antwort - Authentifizierung fehlgeschlagen

HTTP/1.1 200 OK
X-Powered-By: PHP/5.4.4-14+deb7u5
Content-Type: text/json; charset=utf8
Date: Fri, 13 Dec 2013 14:20:27 GMT
Server: lighttpd/1.4.31
Content-Length: 22
Accept-Ranges: none
Connection: Keep-Alive

{
  succeeded: false
}

Beispiel Server-Implementierung

Wichtiger Hinweis: Die Application Integration Server Implementierungen auf dieser Webseite verstehen sich als Beispielimplementierungen. Diese Beispiele sollen Systemadministratoren und Entwicklern helfen zu verstehen, wie ein Application Integration Server funktioniert und wie dieser in der eigenen Umgebung verwendet werden kann.
Bitte haben Sie Verständnis, dass wir über diese Dokumentation hinausgehen keinerlei Unterstützung für diese Beispielimplementierungen anbieten. Falls nicht anders angegeben, sind die Beispiele unter der MIT Lizenz veröffentlicht.

Python

Die Python-Implementierung eines modularen Application Integration Servers finden Sie hier.