50
Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis Verzeichnisdienste 16.-17.09.2014 in Osnabrück Manuel Haim, HRZ Uni Marburg

OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

Manuel Haim - Hochschulrechenzentrum

OpenIDM als „Datendrehscheibe“ –erste Erfahrungen und Konfiguration

ZKI-Arbeitskreis Verzeichnisdienste16.-17.09.2014 in OsnabrückManuel Haim, HRZ Uni Marburg

Page 2: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

2Manuel Haim - Hochschulrechenzentrum

Erklärtes Ziel

• Einführung einer allgemeinen Software für den Datenabgleich zwischen verschiedenen IT-Systemen→ nicht nur für User- / Identitäts-Objekte (klassisches IDM), sondern für beliebige Objekte (z.B. Räume, Termine, Server, …)→ Anwendungs-Know-How unter HRZ-Mitarbeitern teilen

• Möglichst kostengünstig / Open Source→ z.B. ForgeRock OpenIDM, evolveum midPoint, Apache Syncope

• Schlagworte:→ Identity Management (IDM)→ Master Data Management (MDM)→ Enterprise Service Bus (ESB)→ Interaktive Formulare / Webinterface (UI)→ Workflows / Geschäftsprozesse (BPM) / BPMN 2.0

Page 3: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

3Manuel Haim - Hochschulrechenzentrum

Überblick OpenIDM

Page 4: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

4Manuel Haim - Hochschulrechenzentrum

Überblick OpenIDM 2.1 / 3.0

Gängige Schnittstellen:• REST-Schnittstelle (HTTPS / JSON)• Datenbankkonnektoren (u.a. CSV, XML, SQL / JDBC, LDAP)• Password-Sync-Plugin für Active Directory

Methoden zum Datenabgleich:• einfache Daten-Mappings mittels JSON-Konfigurationsdateien• skriptgesteuerte Verarbeitung mittels JavaScript• prozess- / workflow-orientierte Verarbeitung mittels Activiti• LiveSync (Delta-Abgleich) oder Reconciliation (Komplettabgleich)

Rudimentäres User Interface (Backbone.js-basiert)

Page 5: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

5Manuel Haim - Hochschulrechenzentrum

Architektur OpenIDM 2.1 / 3.0

Page 6: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

6Manuel Haim - Hochschulrechenzentrum

Vorkenntnisse:REST – Representational State Transfer

• REST ist eine Vorgehensweise zum Datenaustausch per HTTP

• Einzelne Objekte werden per Web-Adresse (URI) angesprochen, z.B. https://idm.example.org/openidm/managed/users/schmidt

• Die HTTP-Methode bestimmt, was zu tun ist, z.B.→ GET = Objekt abfragen→ POST = Unterobjekt anlegen (ohne vorgegebenen Namen)→ PUT = Objekt anlegen bzw. überschreiben→ DELETE = Objekt löschen

• Objekte werden z.B. im JSON- oder XML-Format übergeben

• Absicherung z.B. per HTTP Basic Auth oder SSL-Client-Zertifikat

Page 7: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

7Manuel Haim - Hochschulrechenzentrum

Vorkenntnisse:JSON – JavaScript Object Notation

• JSON ist ein kompaktes textbasiertes Datenformat

• in der Regel einfacher zu lesen als XML

• Beispiel:

{ "uid" : "schmidt", "cn" : "Udo Schmidt", "email" : { "[email protected]", "[email protected]" }}

{ "uid" : "schmidt", "cn" : "Udo Schmidt", "email" : { "[email protected]", "[email protected]" }}

Page 8: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

8Manuel Haim - Hochschulrechenzentrum

(vgl. Vortrag der FH Düsseldorf beim ZKI-Arbeitskreis Verzeichnisdienste im Herbst 2013 in Kaiserslautern)

Zu beachten: Ein Regelwerk muss man sich selbst überlegen!

Page 9: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

9Manuel Haim - Hochschulrechenzentrum

Konfiguration

Page 10: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

10Manuel Haim - Hochschulrechenzentrum

Zip-Archiv entpacken und los geht’s:OpenIDM Verzeichnisstruktur

openidm/ [Hauptverzeichnis]+- bin/ [OpenIDM und Apache Felix (jar-Dateien)]+- bundle/ [weitere Komponenten (jar-Dateien)]+- conf/ [projektspez. Konfigurationsdateien]+- connectors/ [OpenICF-Konnektoren (jar-Dateien)]+- db/ [SQL-Init-Skripte Repository-Datenbank]+- legal-notices/+- logs/ [Log-Dateien]+- samples/ [Beispielprojekte und Konfig.dateien]+- script/ [projektspez. Skripte]+- security/ [SSL-Keys]+- ui/ [Webinterface (Backbone.js-basiert)]+- workflow/ [Activiti workflow engine]+- shutdown.sh [OpenIDM stoppen]+- startup.sh [OpenIDM starten (interaktive Konsole!)]

openidm/ [Hauptverzeichnis]+- bin/ [OpenIDM und Apache Felix (jar-Dateien)]+- bundle/ [weitere Komponenten (jar-Dateien)]+- conf/ [projektspez. Konfigurationsdateien]+- connectors/ [OpenICF-Konnektoren (jar-Dateien)]+- db/ [SQL-Init-Skripte Repository-Datenbank]+- legal-notices/+- logs/ [Log-Dateien]+- samples/ [Beispielprojekte und Konfig.dateien]+- script/ [projektspez. Skripte]+- security/ [SSL-Keys]+- ui/ [Webinterface (Backbone.js-basiert)]+- workflow/ [Activiti workflow engine]+- shutdown.sh [OpenIDM stoppen]+- startup.sh [OpenIDM starten (interaktive Konsole!)]

Page 11: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

11Manuel Haim - Hochschulrechenzentrum

Allgemeines zur Konfiguration von OpenIDM

• Konfigurationsdateien liegen im Unterverzeichnis conf/

• Änderungen nur bei laufendem OpenIDM vornehmen!→ OpenIDM überwacht Dateien, reagiert autom. auf Änderungen→ die tatsächliche Konfiguration liegt im Repository

• OpenIDM manipuliert Konfigurationsdateien!→ z.B. Verschlüsselung eingetragener Passwörter

• Standardmäßig OrientDB als OpenIDM-Repository (Datenbank)→ OpenIDM-zip-Archiv entpacken und direkt ausprobieren :-)→ alternatives Repository leicht einzurichten (z.B. MySQL)

• OpenIDM mit alternativem (Sample-) Projektverzeichnis starten:→ startup.sh -p <dir>

Page 12: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

12Manuel Haim - Hochschulrechenzentrum

Die wichtigsten Konfigurationsdateien in conf/

• Lokales OpenIDM-Repository (repo.orientdb.json | repo.jdbc.json)→ Beispiele für MySQL / MS SQL / Oracle unter samples/misc/

• Lokal im Repository verwaltete Objekte (managed.json)

• Objekte in externen Systemen (provisioner.openicf-xxx.json)

• Synchronisierungs-Mappings (sync.json)

• Scheduler (scheduler.json , schedule-recon-xxx.json)

Page 13: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

13Manuel Haim - Hochschulrechenzentrum

OpenIDM Repository

• objecttypes→ Objektklassen-Namen

• xxxobjects→ vollst. Objekte in JSON

• xxxobjectproperties→ Objekte zerlegt in key-type-value-Tupel

• links→ Relationen zus.gehörender managed- und/oder system-Objekte

+---------------------------+| Tables_in_openidm |+---------------------------+| auditaccess || auditactivity || auditrecon || clusterobjectproperties || clusterobjects || configobjectproperties || configobjects || genericobjectproperties || genericobjects || internaluser || links || managedobjectproperties || managedobjects || objecttypes || schedulerobjectproperties || schedulerobjects || security || securitykeys || uinotification |+---------------------------+

+---------------------------+| Tables_in_openidm |+---------------------------+| auditaccess || auditactivity || auditrecon || clusterobjectproperties || clusterobjects || configobjectproperties || configobjects || genericobjectproperties || genericobjects || internaluser || links || managedobjectproperties || managedobjects || objecttypes || schedulerobjectproperties || schedulerobjects || security || securitykeys || uinotification |+---------------------------+

Page 14: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

14Manuel Haim - Hochschulrechenzentrum

OpenIDM Synchronization Situations und Actions

Situations (gekürzt):

• SOURCE_IGNORED

• MISSING

• FOUND

• AMBIGUOUS

• UNQUALIFIED

• CONFIRMED

• SOURCE_MISSING

• ABSENT

• TARGET_IGNORED

• UNASSIGNED

Actions:

• CREATE

• UPDATE

• DELETE

• LINK

• UNLINK

• EXCEPTION

• IGNORE

• REPORT

• NOREPORT

• ASYNC

Page 15: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

15Manuel Haim - Hochschulrechenzentrum

Beispiel: Kalenderabgleich

• HRZ-Abteilungen pflegen separate Abwesenheitskalender→ Horde als Groupware (Webmail, Terminkalender, ...)→ Kalender z.B. per HTTPS als ics-Datei abrufbar

• Kalendereinträge haben die Form „X Nachname“, wobei X =→ U (Urlaub)→ G (Gleittag)→ D (Dienstreise)

• Anstehende Termine werden in Leitungssitzung besprochen→ Ziel: Überblick der anstehenden Dienstreisen→ Ziel: Sicherstellen der Aufgaben (z.B. mind. 1 Leiter anwesend)→ hierzu besteht eine Access-Anwendung (mit PostgreSQL-DB)→ Kalender werden derzeit manuell in PostgreSQL überführt

Page 16: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

16Manuel Haim - Hochschulrechenzentrum

Schritt 1a: Kalender-Konnektor programmieren (1)

• ICF = Integrated Connector Framework→ bereits von Sun für Sun IDM genutzt→ als OpenICF von Forgerock weiterentwickelt→ vordefinierte Objektklassen __ACCOUNT__ und __GROUP__

• Eclipse als IDE→ Library „connector-framework-1.1.1.0.jar“ aus OpenIDM im Path

• FlatFileConnector aus OpenICF als Basis genutzt→ siehe http://openicf.forgerock.org

• HTTP(S)-Dateidownload und Dateicache implementiert→ Authentifizierung am Horde-Server mittels eigenem Account→ Cache sinnvoll, da sonst für jede Anfrage neuer Download

Page 17: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

17Manuel Haim - Hochschulrechenzentrum

Schritt 1a: Kalender-Konnektor programmieren (2)

• Im Standardfall sind zwei Java-Klassen zu programmieren→ eine zum Auslesen der Konnektor-Konfiguration→ eine für den Konnektor selbst

• Verzeichnisstruktur:

.+- META-INF/| +- MANIFEST.MF+- unimr/ +- icf/ +- ics/ +- IcsCalendarConfiguration.class +- IcsCalendarConnector.class +- IcsCalendarConnector$1.class

.+- META-INF/| +- MANIFEST.MF+- unimr/ +- icf/ +- ics/ +- IcsCalendarConfiguration.class +- IcsCalendarConnector.class +- IcsCalendarConnector$1.class

Page 18: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

18Manuel Haim - Hochschulrechenzentrum

Schritt 1a: Kalender-Konnektor programmieren (3)

• Datei MANIFEST.MF (Minimalbeispiel!):

Manifest-Version: 1.0Bnd-LastModified: 1406123400000Build-Jdk: 1.7.0_21Bundle-Description: Connector for IcsCalendarBundle-License: http://opensource.org/licenses/CDDL-1.0, http://creative commons.org/licenses/by-nc-nd/3.0/Bundle-ManifestVersion: 2Bundle-Name: IcsCalendar ConnectorBundle-SymbolicName: unimr.icf.ics.icscalendar-connectorBundle-Vendor: Uni MarburgBundle-Version: 1.0ConnectorBundle-FrameworkVersion: 1.1ConnectorBundle-Name: unimr.icf.ics.icscalendar-connectorConnectorBundle-Version: 1.0Created-By: Apache Maven Bundle PluginEmbed-Directory: libEmbed-Transitive: trueImplementation-Build: 0Implementation-Title: IcsCalendar ConnectorImplementation-Vendor: Uni MarburgImplementation-Vendor-Id: unimr.icf.icsImplementation-Version: 1.0SCM-Revision: 0Tool: Bnd-1.50.0

Manifest-Version: 1.0Bnd-LastModified: 1406123400000Build-Jdk: 1.7.0_21Bundle-Description: Connector for IcsCalendarBundle-License: http://opensource.org/licenses/CDDL-1.0, http://creative commons.org/licenses/by-nc-nd/3.0/Bundle-ManifestVersion: 2Bundle-Name: IcsCalendar ConnectorBundle-SymbolicName: unimr.icf.ics.icscalendar-connectorBundle-Vendor: Uni MarburgBundle-Version: 1.0ConnectorBundle-FrameworkVersion: 1.1ConnectorBundle-Name: unimr.icf.ics.icscalendar-connectorConnectorBundle-Version: 1.0Created-By: Apache Maven Bundle PluginEmbed-Directory: libEmbed-Transitive: trueImplementation-Build: 0Implementation-Title: IcsCalendar ConnectorImplementation-Vendor: Uni MarburgImplementation-Vendor-Id: unimr.icf.icsImplementation-Version: 1.0SCM-Revision: 0Tool: Bnd-1.50.0

Page 19: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

19Manuel Haim - Hochschulrechenzentrum

Schritt 1a: Kalender-Konnektor programmieren (4)

• Hinweis: Unser Kalender-Konnektor kann nur lesen

• Java-Klassen gern auf Anfrage

Page 20: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

20Manuel Haim - Hochschulrechenzentrum

Schritt 1b: Kalender-Konnektor konfigurieren (1)

• Konnektoren bieten Zugriff auf System Objects→ Konfiguration per json-Datei provisioner.openicf-xxx.json→ Achtung: In json-Dateien sind keine Kommentare möglich!!!

• Wir schreiben für jeden Abteilungskalender eine json-Datei→ nachfolgend exemplarisch für die HRZ-Abteilung Anwendungen

• Datei conf/provisioner.openicf-calhrzanwend.json:{ "name" : "calHrzAnwend", "connectorRef" : { "bundleName" : "unimr.icf.ics.icscalendar-connector", "bundleVersion" : "1.0", "connectorName" : "unimr.icf.ics.IcsCalendarConnector" }, "poolConfigOption" : { "maxObjects" : 10, "maxIdle" : 10, "maxWait" : 150000, "minEvictableIdleTimeMillis" : 120000, "minIdle" : 1 },

{ "name" : "calHrzAnwend", "connectorRef" : { "bundleName" : "unimr.icf.ics.icscalendar-connector", "bundleVersion" : "1.0", "connectorName" : "unimr.icf.ics.IcsCalendarConnector" }, "poolConfigOption" : { "maxObjects" : 10, "maxIdle" : 10, "maxWait" : 150000, "minEvictableIdleTimeMillis" : 120000, "minIdle" : 1 },

Page 21: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

21Manuel Haim - Hochschulrechenzentrum

Schritt 1b: Kalender-Konnektor konfigurieren (2)

• Datei conf/provisioner.openicf-ics.json (Fortsetzung):

"operationTimeout" : { "CREATE" : -1, "VALIDATE" : -1, "TEST" : -1, "SCRIPT_ON_CONNECTOR" : -1, "SCHEMA" : -1, "DELETE" : -1, "UPDATE" : -1, "SYNC" : -1, "AUTHENTICATE" : -1, "GET" : -1, "SCRIPT_ON_RESOURCE" : -1, "SEARCH" : -1 }, "configurationProperties" : { "file" : "https://home.hrz.uni-marburg.de/rpc.php/kronolith/[email protected]/123f512a4c32ef52b134.ics", "encoding" : "UTF-8", "username" : "idm2cal", "password" : "password", "cacheFile" : "/tmp/cal_hrz_anwend.ics", "cacheTimeout" : 60000

},

"operationTimeout" : { "CREATE" : -1, "VALIDATE" : -1, "TEST" : -1, "SCRIPT_ON_CONNECTOR" : -1, "SCHEMA" : -1, "DELETE" : -1, "UPDATE" : -1, "SYNC" : -1, "AUTHENTICATE" : -1, "GET" : -1, "SCRIPT_ON_RESOURCE" : -1, "SEARCH" : -1 }, "configurationProperties" : { "file" : "https://home.hrz.uni-marburg.de/rpc.php/kronolith/[email protected]/123f512a4c32ef52b134.ics", "encoding" : "UTF-8", "username" : "idm2cal", "password" : "password", "cacheFile" : "/tmp/cal_hrz_anwend.ics", "cacheTimeout" : 60000

},

Page 22: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

22Manuel Haim - Hochschulrechenzentrum

Schritt 1b: Kalender-Konnektor konfigurieren (3)

• Datei conf/provisioner.openicf-ics.json (Fortsetzung, gekürzt):

(Objektklasse __ACCOUNT__ aus Kompatibilitätsgründen nötig)

"objectTypes" : { "myObject" : { "$schema" : "http://json-schema.org/draft-03/schema", "id" : "__ACCOUNT__", "type" : "object", "nativeType" : "__ACCOUNT__", "properties" : { "key" : { "type" : "string", "required" : true, "nativeName" : "__NAME__", "nativeType" : "string" }, "summary" : { "type" : "string", "nativeName" : "SUMMARY", "nativeType" : "string" } } } }, "operationOptions" : { }}

"objectTypes" : { "myObject" : { "$schema" : "http://json-schema.org/draft-03/schema", "id" : "__ACCOUNT__", "type" : "object", "nativeType" : "__ACCOUNT__", "properties" : { "key" : { "type" : "string", "required" : true, "nativeName" : "__NAME__", "nativeType" : "string" }, "summary" : { "type" : "string", "nativeName" : "SUMMARY", "nativeType" : "string" } } } }, "operationOptions" : { }}

Page 23: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

23Manuel Haim - Hochschulrechenzentrum

Schritt 2a: Managed Objects definieren

• Nur nötig, falls man Objekte im OpenIDM-eigenen Repository ablegen möchte

• Es wird hierbei nur der Objekttyp definiert, nicht die Properties

• Beispieldatei conf/managed.json:

{ "objects" : [ { "name" : "myCalendar" } ]}

{ "objects" : [ { "name" : "myCalendar" } ]}

Page 24: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

24Manuel Haim - Hochschulrechenzentrum

Schritt 2b: System Objects definieren (1)

• Wir wollen die Kalendereinträge in PostgreSQL speichern

• Hierzu eignet sich der ScriptedSQLConnector (Anpassung nötig)

• Datei conf/provisioner.openicf-caldb.json:

{ "name" : "caldb", "connectorRef" : { "bundleName" : "org.forgerock.openicf.connectors.scriptedsql-connector", "bundleVersion" : "1.1.0.1", "connectorName" : "org.forgerock.openicf.connectors.scriptedsql.ScriptedSQLConnector" },

{ "name" : "caldb", "connectorRef" : { "bundleName" : "org.forgerock.openicf.connectors.scriptedsql-connector", "bundleVersion" : "1.1.0.1", "connectorName" : "org.forgerock.openicf.connectors.scriptedsql.ScriptedSQLConnector" },

Page 25: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

25Manuel Haim - Hochschulrechenzentrum

Schritt 2b: System Objects definieren (2)

• Datei conf/provisioner.openicf-caldb.json (Fortsetzung):

"producerBufferSize" : 100, "connectorPoolingSupported" : true, "poolConfigOption" : { "maxObjects" : 10, "maxIdle" : 10, "maxWait" : 150000, "minEvictableIdleTimeMillis" : 120000, "minIdle" : 1 }, "operationTimeout" : { "CREATE" : -1, "TEST" : -1, "AUTHENTICATE" : -1, "SEARCH" : -1, "VALIDATE" : -1, "GET" : -1, "UPDATE" : -1, "DELETE" : -1, "SCRIPT_ON_CONNECTOR" : -1, "SCRIPT_ON_RESOURCE" : -1, "SYNC" : -1, "SCHEMA" : -1 },

"producerBufferSize" : 100, "connectorPoolingSupported" : true, "poolConfigOption" : { "maxObjects" : 10, "maxIdle" : 10, "maxWait" : 150000, "minEvictableIdleTimeMillis" : 120000, "minIdle" : 1 }, "operationTimeout" : { "CREATE" : -1, "TEST" : -1, "AUTHENTICATE" : -1, "SEARCH" : -1, "VALIDATE" : -1, "GET" : -1, "UPDATE" : -1, "DELETE" : -1, "SCRIPT_ON_CONNECTOR" : -1, "SCRIPT_ON_RESOURCE" : -1, "SYNC" : -1, "SCHEMA" : -1 },

Page 26: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

26Manuel Haim - Hochschulrechenzentrum

Schritt 2b: System Objects definieren (3)

• Datei conf/provisioner.openicf-caldb.json (Fortsetzung):

"configurationProperties" : { "host" : "caldb.hrz.uni-marburg.de", "port" : "5432", "user" : "idm2cal", "password" : "password", "database" : "caldb", "autoCommit" : true, "reloadScriptOnExecution" : false, "jdbcDriver" : "org.postgresql.Driver", "jdbcConnectionUrl" : "jdbc:postgresql://caldb.hrz.uni-marburg.de:5432/idm2cal?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory", "jdbcUrlTemplate" : "jdbc:postgresql://%h:%p/%d?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory", "createScriptFileName" : "/opt/openidm/haimm/caldb/s/CreateScript.groovy", "testScriptFileName" : "/opt/openidm/haimm/caldb/s/TestScript.groovy", "searchScriptFileName" : "/opt/openidm/haimm/caldb/s/SearchScript.groovy", "deleteScriptFileName" : "/opt/openidm/haimm/caldb/s/DeleteScript.groovy", "updateScriptFileName" : "/opt/openidm/haimm/caldb/s/UpdateScript.groovy", "syncScriptFileName" : "/opt/openidm/haimm/caldb/s/SyncScript.groovy" },

"configurationProperties" : { "host" : "caldb.hrz.uni-marburg.de", "port" : "5432", "user" : "idm2cal", "password" : "password", "database" : "caldb", "autoCommit" : true, "reloadScriptOnExecution" : false, "jdbcDriver" : "org.postgresql.Driver", "jdbcConnectionUrl" : "jdbc:postgresql://caldb.hrz.uni-marburg.de:5432/idm2cal?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory", "jdbcUrlTemplate" : "jdbc:postgresql://%h:%p/%d?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory", "createScriptFileName" : "/opt/openidm/haimm/caldb/s/CreateScript.groovy", "testScriptFileName" : "/opt/openidm/haimm/caldb/s/TestScript.groovy", "searchScriptFileName" : "/opt/openidm/haimm/caldb/s/SearchScript.groovy", "deleteScriptFileName" : "/opt/openidm/haimm/caldb/s/DeleteScript.groovy", "updateScriptFileName" : "/opt/openidm/haimm/caldb/s/UpdateScript.groovy", "syncScriptFileName" : "/opt/openidm/haimm/caldb/s/SyncScript.groovy" },

Page 27: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

27Manuel Haim - Hochschulrechenzentrum

Schritt 2b: System Objects definieren (4)

• Datei conf/provisioner.openicf-caldb.json (Fortsetzung, gekürzt):

"objectTypes" : { "vevent" : { "$schema" : "http://json-schema.org/draft-03/schema", "id" : "vevent", "type" : "object", "nativeType" : "vevent", "properties" : { "uid" : { "type" : "string", "nativeName" : "UID", "nativeType" : "string" }, "type" : { "type" : "string", "nativeName" : "AbwTyp", "nativeType" : "string" }, "description" : { "type" : "string", "nativeName" : "Veranstaltung", "nativeType" : "string" } } } }, "operationOptions" : { }}

"objectTypes" : { "vevent" : { "$schema" : "http://json-schema.org/draft-03/schema", "id" : "vevent", "type" : "object", "nativeType" : "vevent", "properties" : { "uid" : { "type" : "string", "nativeName" : "UID", "nativeType" : "string" }, "type" : { "type" : "string", "nativeName" : "AbwTyp", "nativeType" : "string" }, "description" : { "type" : "string", "nativeName" : "Veranstaltung", "nativeType" : "string" } } } }, "operationOptions" : { }}

Page 28: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

28Manuel Haim - Hochschulrechenzentrum

Schritt 3: Reconciliation-Mappings definieren (1)

• Hilfsscript script/isSourceValid.js

// Check if ventry is less than one year old

function isValid() { var str = ""; var currentTime = new Date(); var year = currentTime.getFullYear(); var month = currentTime.getMonth(); month++; // getMonth() is 0-based var day = currentTime.getDate(); var hours = currentTime.getHours(); var minutes = currentTime.getMinutes(); var seconds = currentTime.getSeconds(); year--;

if (month < 10) { month = "0" + month; } if (day < 10) { day = "0" + day; } if (hours < 10 ) { hours = "0" + hours; } if (minutes < 10) { minutes = "0" + minutes; } if (seconds < 10) { seconds = "0" + seconds; } str += year + month + day + hours + minutes + seconds + " ";

var result = true; if (source.dtend < str) result=false; //logger.warn("HALLOWELT {} < {} , isValid()=={}", source.dtend, str, result); return result;}

isValid();

// Check if ventry is less than one year old

function isValid() { var str = ""; var currentTime = new Date(); var year = currentTime.getFullYear(); var month = currentTime.getMonth(); month++; // getMonth() is 0-based var day = currentTime.getDate(); var hours = currentTime.getHours(); var minutes = currentTime.getMinutes(); var seconds = currentTime.getSeconds(); year--;

if (month < 10) { month = "0" + month; } if (day < 10) { day = "0" + day; } if (hours < 10 ) { hours = "0" + hours; } if (minutes < 10) { minutes = "0" + minutes; } if (seconds < 10) { seconds = "0" + seconds; } str += year + month + day + hours + minutes + seconds + " ";

var result = true; if (source.dtend < str) result=false; //logger.warn("HALLOWELT {} < {} , isValid()=={}", source.dtend, str, result); return result;}

isValid();

Page 29: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

29Manuel Haim - Hochschulrechenzentrum

Schritt 3: Reconciliation-Mappings definieren (2)

• Hilfsscript script/dtToTimestamp.js

function dtToTimestamp() { if (source==null) return ""; var str = ""; var year; var month; var day; var hours; var minutes; var seconds; if (source.length == 8) { year = source.substr(0,4); month = source.substr(4,2); day = source.substr(6,2); str += year + "-" + month + "-" + day + " 00:00:00"; } else if (source.length >= 15) { year = source.substr(0,4); month = source.substr(4,2); day = source.substr(6,2); hours = source.substr(9,2); minutes = source.substr(11,2); seconds = source.substr(13,2); str += year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; } return str;}

dtToTimestamp();

function dtToTimestamp() { if (source==null) return ""; var str = ""; var year; var month; var day; var hours; var minutes; var seconds; if (source.length == 8) { year = source.substr(0,4); month = source.substr(4,2); day = source.substr(6,2); str += year + "-" + month + "-" + day + " 00:00:00"; } else if (source.length >= 15) { year = source.substr(0,4); month = source.substr(4,2); day = source.substr(6,2); hours = source.substr(9,2); minutes = source.substr(11,2); seconds = source.substr(13,2); str += year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; } return str;}

dtToTimestamp();

Page 30: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

30Manuel Haim - Hochschulrechenzentrum

Schritt 3: Reconciliation-Mappings definieren (3)

• Datei conf/sync.json:

{ "mappings" : [ { "name" : "systemCalHrzAnwend_systemCaldb", "source" : "system/calHrzAnwend/vevent", "target" : "system/caldb/vevent", "validSource" : { "type" : "text/javascript", "file" : "/opt/openidm/haimm/caldb/script/isSourceValid.js" }, "properties" : [ { "source" : "key", "target" : "_id" }, { "source" : "dtstart", "transform" : { "type" : "text/javascript", "file":"/opt/openidm/haimm/caldb/script/dtToTimestamp.js" }, "target" : "dtstart" },

{ "mappings" : [ { "name" : "systemCalHrzAnwend_systemCaldb", "source" : "system/calHrzAnwend/vevent", "target" : "system/caldb/vevent", "validSource" : { "type" : "text/javascript", "file" : "/opt/openidm/haimm/caldb/script/isSourceValid.js" }, "properties" : [ { "source" : "key", "target" : "_id" }, { "source" : "dtstart", "transform" : { "type" : "text/javascript", "file":"/opt/openidm/haimm/caldb/script/dtToTimestamp.js" }, "target" : "dtstart" },

Page 31: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

31Manuel Haim - Hochschulrechenzentrum

Schritt 3: Reconciliation-Mappings definieren (4)

• Datei conf/sync.json (Fortsetzung, gekürzt):

{ "source" : "summary", "transform" : { "type" : "text/javascript", "source" : "source.substr(0,1);" }, "target" : "type" }, { "source" : "", "transform" : { "type" : "text/javascript", "source" : "source.summary.substr(2,10);" }, "target" : "person" }, { "source" : "description", "target" : "description" } ],

{ "source" : "summary", "transform" : { "type" : "text/javascript", "source" : "source.substr(0,1);" }, "target" : "type" }, { "source" : "", "transform" : { "type" : "text/javascript", "source" : "source.summary.substr(2,10);" }, "target" : "person" }, { "source" : "description", "target" : "description" } ],

Page 32: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

32Manuel Haim - Hochschulrechenzentrum

Schritt 3: Reconciliation-Mappings definieren (5)

• Datei conf/sync.json (Fortsetzung, gekürzt):

"policies" : [{ "situation" : "CONFIRMED", "action" : "UPDATE" },{ "situation" : "FOUND", "action" : "UPDATE" },{ "situation" : "ABSENT", "action" : "CREATE" },{ "situation" : "AMBIGUOUS", "action" : "EXCEPTION" },{ "situation" : "MISSING", "action" : "UNLINK" },{ "situation" : "SOURCE_MISSING", "action" : "DELETE" },{ "situation" : "UNQUALIFIED", "action" : "DELETE" },{ "situation" : "UNASSIGNED", "action" : "IGNORE" } ] }, ]}

"policies" : [{ "situation" : "CONFIRMED", "action" : "UPDATE" },{ "situation" : "FOUND", "action" : "UPDATE" },{ "situation" : "ABSENT", "action" : "CREATE" },{ "situation" : "AMBIGUOUS", "action" : "EXCEPTION" },{ "situation" : "MISSING", "action" : "UNLINK" },{ "situation" : "SOURCE_MISSING", "action" : "DELETE" },{ "situation" : "UNQUALIFIED", "action" : "DELETE" },{ "situation" : "UNASSIGNED", "action" : "IGNORE" } ] }, ]}

Page 33: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

33Manuel Haim - Hochschulrechenzentrum

Schritt 4: Scheduler definieren

• Datei conf/schedule-recon-cal-hrz-anwend.json:

• Bevor wir enabled=true setzen, sollten wir ausprobieren:

• Ergebnis:

{ "enabled" : false, "type" : "cron", "schedule" : "0 0/15 * * * ?", "concurrentExecution" : false, "invokeService" : "sync", "invokeContext" : { "action" : "reconcile", "mapping" : "systemCalHrzAnwend_systemCaldb" }}

{ "enabled" : false, "type" : "cron", "schedule" : "0 0/15 * * * ?", "concurrentExecution" : false, "invokeService" : "sync", "invokeContext" : { "action" : "reconcile", "mapping" : "systemCalHrzAnwend_systemCaldb" }}

$ curl --header "X-OpenIDM-Username: openidm-admin" \--header "X-OpenIDM-Password: openidm-admin" --request POST \"http://localhost:8080/openidm/recon?_action=recon&mapping=systemCalHrzAnwend_systemCaldb"

$ curl --header "X-OpenIDM-Username: openidm-admin" \--header "X-OpenIDM-Password: openidm-admin" --request POST \"http://localhost:8080/openidm/recon?_action=recon&mapping=systemCalHrzAnwend_systemCaldb"

SUCCESSSOURCE_IGNORED: 0 MISSING: 0 FOUND: 0 AMBIGUOUS: 0 UNQUALIFIED: 0 CONFIRMED: 0 SOURCE_MISSING: 0 ABSENT: 197 TARGET_IGNORED: 0 UNASSIGNED: 0

SUCCESSSOURCE_IGNORED: 0 MISSING: 0 FOUND: 0 AMBIGUOUS: 0 UNQUALIFIED: 0 CONFIRMED: 0 SOURCE_MISSING: 0 ABSENT: 197 TARGET_IGNORED: 0 UNASSIGNED: 0

Page 34: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

34Manuel Haim - Hochschulrechenzentrum

Jetzt kommt der Clou...

• Alle Quell-Kalender werden mit derselben Zieltabelle synchronisiert→ Neue Einträge sind ABSENT, werden in Zieltabelle übernommen→ Vorhandene Einträge sind FOUND→ Existiert der Quelleintrag nicht mehr (SOURCE MISSING), so wird der Zieleintrag gelöscht→ Vorhandene Zieleinträge anderer Quellen werden hierbei als UNASSIGNED gewertet und bleiben erhalten

Page 35: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

35Manuel Haim - Hochschulrechenzentrum

OpenIDM Tipps und Tricks (1)

• curl und jq verwenden (jq formatiert die Ausgabe)

• IDs von Systemobjekten

• Einzelnes Systemobjekt (inkl. Attribute) anhand ID

• Aufruf eines Reconciliation-Mappings

• OpenIDM-Konfiguration ermitteln

curl […] | jq '.'curl […] | jq '.'

curl […] http://localhost:8080/openidm/system/caldb/vevent/?_queryId=query-all-ids

curl […] http://localhost:8080/openidm/system/caldb/vevent/?_queryId=query-all-ids

curl […] http://localhost:8080/openidm/system/caldb/vevent/a73f94e3

curl […] http://localhost:8080/openidm/system/caldb/vevent/a73f94e3

curl […] --request POST http://localhost:8080/openidm/recon?_action=recon&mapping=systemCalHrzAnwend_systemCaldb

curl […] --request POST http://localhost:8080/openidm/recon?_action=recon&mapping=systemCalHrzAnwend_systemCaldb

curl --user openidm-admin:passw http://localhost:8080/openidm/configcurl --user openidm-admin:passw http://localhost:8080/openidm/config

Page 36: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

36Manuel Haim - Hochschulrechenzentrum

Lizenziserung

Page 37: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

37Manuel Haim - Hochschulrechenzentrum

Ein wenig Geschichte...

• Sun Identity Manager (ehemals Wave) fällt an Oracle→ Oracle vermarktet bereits den Oracle Identity Manager→ Sun Identity Manager wird in Oracle Wave umbenannt→ Oracle Wave wird abgekündigt, Kunden sollen umsteigen

• nLight (IDM-Berater) und Forgerock (frühere Sun-Entwickler) entwickeln OpenIDM 1.x als Open-Source-Ersatz für Sun IDM→ Hauptentwicklung nLight, klassische Technologien (XML, Spring)→ Forgerock plant nochmals Neuentwicklung, will Code verwerfen→ nLight gründet evolveum, übernimmt bisherigen Code→ OpenIDM 1.x wird zu evolveum midPoint (Apache-Lizenz)

• Forgerock entwickelt OpenIDM 2.x from scratch (CDDL-Lizenz)→ neue Technologien (JSON, OSGi, BPMN), Marketing

Page 38: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

38Manuel Haim - Hochschulrechenzentrum

Lizenzbedingungen bis Februar 2013:OpenIDM 2.0.3 Enterprise Build für alle frei nutzbar

Page 39: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

39Manuel Haim - Hochschulrechenzentrum

Seit Februar 2013 neue Lizenzbedingungen:OpenIDM 2.1 Enterprise Build nur für Bezahlkunden

Page 40: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

40Manuel Haim - Hochschulrechenzentrum

...aber Custom Build gemäß CDDL erlaubt, s. FAQ:

Page 41: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

41Manuel Haim - Hochschulrechenzentrum

OpenIDMselbst kompilieren

Page 42: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

42Manuel Haim - Hochschulrechenzentrum

OpenIDM 2.1 Revision 3210 holen und kompilieren

• Erforderliche Tools: Java-JDK (z.B. openjdk-7-jdk), svn, maven

• Herunterladen nach /tmp:

• Kompilieren (dauert eine Weile, Maven lädt Ressourcen nach):

• Zieldatei liegt anschließend unter/tmp/2.1.0/openidm-zip/target/openidm-2.1.0.zip

$ cd /tmp$ svn co -r 3210 https://svn.forgerock.org/openidm/tags/2.1.0

$ cd /tmp$ svn co -r 3210 https://svn.forgerock.org/openidm/tags/2.1.0

$ cd /tmp/2.1.0$ mvn clean install

$ cd /tmp/2.1.0$ mvn clean install

Page 43: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

43Manuel Haim - Hochschulrechenzentrum

… und entpacken

• z.B. wie folgt:

• Anschließend könnte man OpenIDM schon per startup.sh starten. Man arbeitet dann aber auf der mitgelieferten OrientDB-Datenbank.

# cd /tmp# unzip /path/to/openidm-2.1.0.zip# mv openidm /opt/openidm-2.1.0-rev3210# ln -s /opt/openidm-2.1.0-rev3210 /opt/openidm

# cd /tmp# unzip /path/to/openidm-2.1.0.zip# mv openidm /opt/openidm-2.1.0-rev3210# ln -s /opt/openidm-2.1.0-rev3210 /opt/openidm

Page 44: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

44Manuel Haim - Hochschulrechenzentrum

Konfiguration PostgreSQL-Repository

Page 45: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

45Manuel Haim - Hochschulrechenzentrum

Verwendete Software-Versionen

• Debian GNU/Linux 7.0 („Wheezy“)

• OpenJDK 7→ apt-get --no-install-recommends install openjdk-7-jdk

• OpenIDM 2.1 Revision 3210 (Mai 2014)→ aus SVN heruntergeladen, selbst kompiliert→ Anpassung für PostgreSQL erforderlich

• PostgreSQL 9.3→ in Version 9.1 „json_extract_path_text“ noch nicht vorhanden!→ postgresql.org als zusätzliche Debian-Paketquelle erforderlich

• OSGi-konformer PostgreSQL-JDBC-Treiber 9.3-1100-jdbc41→ aus Apache ServiceMix Bundles

Page 46: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

46Manuel Haim - Hochschulrechenzentrum

OpenIDM 2.1 Revision 3210:Fehler in PostgreSQLTableHandler patchen

• Datei openidm-repo-jdbc/src/main/java/org/forgerock/openidm/repo/jdbc/impl/PostgreSQLTableHandler.java wie folgt anpassen:

• Dann neu kompilieren. Falls vorh. Installation gepatcht werden soll:Datei openidm-repo-jdbc/target/openidm-repo-jdbc-2.1.0.jar nach openidm/bundle/ kopieren und openidm/felix-cache/ leeren

protected Map<QueryDefinition, String> initializeQueryMap() {... result.put(QueryDefinition.DELETEQUERYSTR, "DELETE FROM " + mainTable + " WHERE id IN (SELECT obj.id FROM " + mainTable + " obj INNER JOIN " + typeTable + " objtype ON obj.objecttypes_id = objtype.id" + " AND objtype.objecttype = ? WHERE obj.objectid = ? AND obj.rev = ?)");...}

protected Map<QueryDefinition, String> initializeQueryMap() {... result.put(QueryDefinition.DELETEQUERYSTR, "DELETE FROM " + mainTable + " WHERE id IN (SELECT obj.id FROM " + mainTable + " obj INNER JOIN " + typeTable + " objtype ON obj.objecttypes_id = objtype.id" + " AND objtype.objecttype = ? WHERE obj.objectid = ? AND obj.rev = ?)");...}

Page 47: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

47Manuel Haim - Hochschulrechenzentrum

OSGi-konformer PostgreSQL-JDBC-Treiber

• Der JDBC-Treiber von postgresql.org liegt nicht als OSGi-Bundle vor, läuft somit nicht unter Apache Felix (OSGi-Container).

• Lösung:Treiber aus Apache ServiceMix Bundle laden und kompilieren:

… und nach OpenIDM kopieren:

$ cd /tmp$ svn co http://svn.apache.org/repos/asf/servicemix/smx4/bundles/trunk/ postgresql-9.3-1100-jdbc41$ cd postgresql-9.3-1100-jdbc41$ mvn

$ cd /tmp$ svn co http://svn.apache.org/repos/asf/servicemix/smx4/bundles/trunk/ postgresql-9.3-1100-jdbc41$ cd postgresql-9.3-1100-jdbc41$ mvn

$ scp -p target/org.apache.servicemix.bundles.postgresql-9.3-1100-jdbc41_2- SNAPSHOT.jar root@openidm-dev:/opt/openidm/bundle/

$ scp -p target/org.apache.servicemix.bundles.postgresql-9.3-1100-jdbc41_2- SNAPSHOT.jar root@openidm-dev:/opt/openidm/bundle/

Page 48: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

48Manuel Haim - Hochschulrechenzentrum

repo.jdbc.json – Repository-Konfiguration(hier: PostgreSQL-Repository)

• Entweder openidm/samples/repo.jdbc.json auf PostgreSQL anpassen

• Oder eine aktuelle Datei aus dem Entwicklungszweig des SVN übernehmen (z.B. Revision 3044, Stand April 2014):

• Achtung: Dateiname muss in „repo.jdbc.json“ geändert werden!

$ cd /tmp$ svn co -r 3044https://svn.forgerock.org/openidm/trunk/openidm-zip/src/main/resources/samples/misc/repo.jdbc-postgres.json

$ cd /tmp$ svn co -r 3044https://svn.forgerock.org/openidm/trunk/openidm-zip/src/main/resources/samples/misc/repo.jdbc-postgres.json

Page 49: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

49Manuel Haim - Hochschulrechenzentrum

Links

• Forgerock:http://www.forgerock.com

• OpenIDM (Installation Guide, Integrator's Guide):http://openidm.forgerock.org

• OpenICF:http://openicf.forgerock.org

• Vergleich Open-Source-IDM-Softwarehttp://www.nlight.eu/documents/open-source-idm/

Page 50: OpenIDM als „Datendrehscheibe“ – erste …...2014/09/16  · Manuel Haim - Hochschulrechenzentrum OpenIDM als „Datendrehscheibe“ – erste Erfahrungen und Konfiguration ZKI-Arbeitskreis

50Manuel Haim - Hochschulrechenzentrum

Danke für Ihre / Eure Aufmerksamkeit!

Noch Fragen?

→ Gern jetzt im Anschluss :-)

→ sonst per E-Mail: Manuel Haim, [email protected]