<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RRZE - Projekte &#38; Prozesse (P&#38;P)</title>
	<atom:link href="http://blogs.fau.de/pp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.fau.de/pp</link>
	<description>Das Blog der RRZE Stabsstelle &#34;Projekte &#38; Prozesse&#34;</description>
	<lastBuildDate>Thu, 04 Apr 2013 14:26:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>gs-admin Version 3.4.9</title>
		<link>http://blogs.fau.de/pp/2013/04/04/gs-admin-version-3-4-9/</link>
		<comments>http://blogs.fau.de/pp/2013/04/04/gs-admin-version-3-4-9/#comments</comments>
		<pubDate>Thu, 04 Apr 2013 14:26:26 +0000</pubDate>
		<dc:creator>Peter Reiß</dc:creator>
				<category><![CDATA[PV]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6987</guid>
		<description><![CDATA[Neu:<p>- Aktivierung wird nicht durchgeführt, wenn bereits ein anderer Eintrag mit gleichem Vor- und Nachnamen und Geburtsdatum aktiviert ist.</p><p>- trimmer-plugin: Leerzeichen zu Beginn und am Ende von Strings werden vor dem Speichern grundsätzlich entfernt</p><p>- Optimierungen Statistik</p>]]></description>
				<content:encoded><![CDATA[<p>Neu:<br />
- Aktivierung wird nicht durchgeführt, wenn bereits ein anderer Eintrag mit gleichem Vor- und Nachnamen und Geburtsdatum aktiviert ist.<br />
- trimmer-plugin: Leerzeichen zu Beginn und am Ende von Strings werden vor dem Speichern grundsätzlich entfernt<br />
- Optimierungen Statistik</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2013/04/04/gs-admin-version-3-4-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday RRZE-Icon-Set</title>
		<link>http://blogs.fau.de/pp/2013/02/05/happy-birthday-rrze-icon-set/</link>
		<comments>http://blogs.fau.de/pp/2013/02/05/happy-birthday-rrze-icon-set/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 12:56:48 +0000</pubDate>
		<dc:creator>Franziska Sponsel</dc:creator>
				<category><![CDATA[RRZE Icon Set]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6972</guid>
		<description><![CDATA[<a href="#Happy Birthday - English Version"> English Version</a><p></p><p><a href="http://blogs.fau.de/pp/files/2013/02/400.png"><img src="http://blogs.fau.de/pp/files/2013/02/400.png" width="150" height="150" /></a></p><p>Was einst mit einer Idee, oder der vergeblichen Google-Suche nach dem passenden Icon, begann hat nun eine erstaunliche Marke erreicht: das offizielle <a href="http://rrze-icon-set.berlios.de/">RRZE-Icon-Set</a> hat sein 400. Icon!</p><p></p><p>Aufgrund dieser großen Zahl an verschiedenen Icons und ihrer unterschiedlichen Verwendung wurde die Anzahl der Unterordner um zwei weitere erweitert. Mittlerweile sind die Icons also aufgeteilt in:</p><p></p><p>	actions (Technische Aktionen, wie etwa: Sortieren, Zusammenfügen, das Verschicken von E-Mails, etc.)</p><p></p><p></p><p>	 categories (Verschiedene Zugehörigkeiten wie: Arbeitnehmer, Admin, Benutzer, etc.)</p><p></p><p></p><p>	 devices (Im allgemeinen IT-Hardware wie: Server, Datenbank, etc.)</p><p></p><p></p><p>	 NEU: documents (Dokumente aller Art)</p><p></p><p></p><p>	 emblems (Der größte Ordner umfasst alle Icons die ein Label oder ein konkretes Bild für einen abstrakten Begriff oder eine Funktion darstellen.)</p><p></p><p></p><p>	 NEU: logos (Hier befinden sich alle Icons die in irgendeiner Weise ein Logo beinhalten.)</p><p></p><p></p><p>	 mime-types (Hier lassen sich Icons für verschiedene Medientypen finden: Text, Video, Audio, etc.)</p><p></p><p></p><p>	 status (Alle Icons, die einen Status darstellen: wartend, geprüft, gelöscht, etc.)</p><p></p><p>Das hauseigene <a href="http://rrze-icon-set.berlios.de/">Icon-Set</a> stellt "kleine bunte Bildchen" zu verschiedenen IT-Themen, Aktionen, Funktionen und vielem mehr zur Verfügung.</p><p></p><p>Um einen einheitlichen Stil zu erhalten werden bei der Erstellung die Vorgaben des Tango-Icon-Themes eingehalten.</p><p></p><p>Verfügbar sind die Icons im Svg- (jeweils eine detailreiche und eine detailärmere Variante für die kleineren Skalierungen) und im Png-Format in den Größen 16x16, 22x22, 32x32, 48x48, 150x150 und 720x720 Pixel und können direkt auf der <a href="http://rrze-icon-set.berlios.de/"> Seite </a> heruntergeladen werden.</p><p></p><p>Falls allerdings das passende Icon immer noch fehlen sollte lässt sich dieses jederzeit noch der Sammlung hinzufügen. Hierfür einfach eine E-Mail an franziska.sponsel@fau.de schicken.</p><p></p><p>Wichtig bei der "Icon-Bestellung" ist allerdings, dass folgende Grundinformationen in der Mail stehen:</p><p></p><p>1. Welche Funktion etc. soll das Icon haben bzw. darstellen? Am besten auch für IT-Laien verständlich ;)</p><p></p><p>2. Gibt es schon konkrete Vorstellungen zum Aussehen (z.Bsp. ein Häuschen für "home") oder Farbwünsche?</p><p></p><p>Es sollte auch immer darauf geachtet werden, dass durch die kleine Skalierung ein Icon  aus nicht mehr als maximal 3 Bestandteilen bestehen kann.</p><p></p><p>Mittlerweile hat das <a href="http://rrze-icon-set.berlios.de/">RRZE-Icon-Set</a> die Versionsnummer 2.3 erreicht und hat in einer Vielzahl von Projekten Anklang und Verwendung gefunden. Sowohl hier in Erlangen in RRZE eigenen Projekten, aber auch in anderen Arbeiten und Projekten in Deutschland, Indien bis hin zum sonnigen California, USA.</p><p></p><p><a></a> English Version</p><p></p><p><a href="http://blogs.fau.de/pp/files/2013/02/400.png"><img src="http://blogs.fau.de/pp/files/2013/02/400.png" width="150" height="150" /></a></p><p>What once started off with an idea, or a fruitless Google search for the perfect Icon, has now reached an incredible benchmark: the official <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> got its 400. icon!</p><p></p><p>&nbsp;</p><p></p><p>Because of this huge number of various icons and their different usage, the number of sub-folders has been expanded by two additional folders. Therefore the icons are now divided into:</p><p></p><p>	actions (technical actions, e.g.: sort, merge, send e-mails, etc.)</p><p></p><p></p><p>	categories (different entitlement or categories, e.g.: employee, admin, user, etc.)</p><p></p><p></p><p>	devices (generally IT-hardware, e.g.: server, databases, etc.)</p><p></p><p></p><p>	NEW: documents (documents of all kind)</p><p></p><p></p><p>	 emblems (the biggest folder concludes all icons which represent a label or a proper picture for an abstract term or function)</p><p></p><p></p><p>	NEW: logos (here you can find icons which represent or conclude a logo)</p><p></p><p></p><p>	 mime-types (icons for different media types, e.g.: text, video, audio, etc.)</p><p></p><p></p><p>	status (icons that represent a status, e.g.: awaiting, approved, deleted, etc.)</p><p></p><p>The <a href="http://rrze-icon-set.berlios.de/">RRZE own icon set</a> offers "tiny colorful pictures" for various IT topics, actions, functions and many more.</p><p></p><p>To create a consistent style the icons are made according to the style sheet of the Tango Icon Theme.</p><p></p><p>The icons are available in svg- (a more and a less detailed version for smaller scaled icons) and in png-format in the sizes 16x16, 22x22, 32x32, 48x48, 150x150 and 720x720 pixels and can be downloaded directly from the   <a href="http://rrze-icon-set.berlios.de/"> website </a>.</p><p></p><p>If the perfect icon for a purpose is still missing it can easily be added to the set. Therefore don't hesitate to send a request e-mail to  franziska.sponsel@fau.de.</p><p></p><p>Important for the "Icon-Order" is that the following basic information is given and in the e-mail:</p><p></p><p>1. What function etc. should the icon represent? The best way is to explain it that even an ordinary person can understand it ;)</p><p></p><p>2. Are there already ideas on how the icon should look like (e.g. a small house for "home") or wishes for the icon's color?</p><p></p><p>You should also keep in mind that, due to the small size of an icon, it can only consist of a maximum of 3 properties.</p><p></p><p>By now the <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> has reached the version number 2.3 and is used in various projects. Here in Erlangen, but also from whole Germany, India to the sunny state of California, USA.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="#Happy Birthday - English Version"> English Version</a></p>
<p style="text-align: center"><a href="http://blogs.fau.de/pp/files/2013/02/400.png"><img class="size-full wp-image-6973 aligncenter" alt="400" src="http://blogs.fau.de/pp/files/2013/02/400.png" width="150" height="150" /></a></p>
<p>Was einst mit einer Idee, oder der vergeblichen Google-Suche nach dem passenden Icon, begann hat nun eine erstaunliche Marke erreicht: das offizielle <a href="http://rrze-icon-set.berlios.de/">RRZE-Icon-Set</a> hat sein 400. Icon!</p>
<p>Aufgrund dieser großen Zahl an verschiedenen Icons und ihrer unterschiedlichen Verwendung wurde die Anzahl der Unterordner um zwei weitere erweitert. Mittlerweile sind die Icons also aufgeteilt in:</p>
<ul>
<li>actions (Technische Aktionen, wie etwa: Sortieren, Zusammenfügen, das Verschicken von E-Mails, etc.)</li>
</ul>
<ul>
<li> categories (Verschiedene Zugehörigkeiten wie: Arbeitnehmer, Admin, Benutzer, etc.)</li>
</ul>
<ul>
<li> devices (Im allgemeinen IT-Hardware wie: Server, Datenbank, etc.)</li>
</ul>
<ul>
<li> <b>NEU: documents (Dokumente aller Art)</b></li>
</ul>
<ul>
<li><b> </b>emblems (Der größte Ordner umfasst alle Icons die ein Label oder ein konkretes Bild für einen abstrakten Begriff oder eine Funktion darstellen.)</li>
</ul>
<ul>
<li> <b>NEU: logos (Hier befinden sich alle Icons die in irgendeiner Weise ein Logo beinhalten.)</b></li>
</ul>
<ul>
<li><b> </b>mime-types (Hier lassen sich Icons für verschiedene Medientypen finden: Text, Video, Audio, etc.)</li>
</ul>
<ul>
<li> status (Alle Icons, die einen Status darstellen: wartend, geprüft, gelöscht, etc.)</li>
</ul>
<p>Das hauseigene <a href="http://rrze-icon-set.berlios.de/">Icon-Set</a> stellt &#8220;kleine bunte Bildchen&#8221; zu verschiedenen IT-Themen, Aktionen, Funktionen und vielem mehr zur Verfügung.</p>
<p>Um einen einheitlichen Stil zu erhalten werden bei der Erstellung die Vorgaben des Tango-Icon-Themes eingehalten.</p>
<p>Verfügbar sind die Icons im Svg- (jeweils eine detailreiche und eine detailärmere Variante für die kleineren Skalierungen) und im Png-Format in den Größen 16&#215;16, 22&#215;22, 32&#215;32, 48&#215;48, 150&#215;150 und 720&#215;720 Pixel und können direkt auf der <a href="http://rrze-icon-set.berlios.de/"> Seite </a> heruntergeladen werden.</p>
<p>Falls allerdings das passende Icon immer noch fehlen sollte lässt sich dieses jederzeit noch der Sammlung hinzufügen. Hierfür einfach eine E-Mail an franziska.sponsel@fau.de schicken.</p>
<p>Wichtig bei der &#8220;Icon-Bestellung&#8221; ist allerdings, dass folgende Grundinformationen in der Mail stehen:</p>
<p>1. Welche Funktion etc. soll das Icon haben bzw. darstellen? Am besten auch für IT-Laien verständlich <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>2. Gibt es schon konkrete Vorstellungen zum Aussehen (z.Bsp. ein Häuschen für &#8220;home&#8221;) oder Farbwünsche?</p>
<p>Es sollte auch immer darauf geachtet werden, dass durch die kleine Skalierung ein Icon  aus nicht mehr als maximal 3 Bestandteilen bestehen kann.</p>
<p>Mittlerweile hat das <a href="http://rrze-icon-set.berlios.de/">RRZE-Icon-Set</a> die Versionsnummer 2.3 erreicht und hat in einer Vielzahl von Projekten Anklang und Verwendung gefunden. Sowohl hier in Erlangen in RRZE eigenen Projekten, aber auch in anderen Arbeiten und Projekten in Deutschland, Indien bis hin zum sonnigen California, USA.</p>
<p><a name="Happy Birthday - English Version"></a> English Version</p>
<p style="text-align: center"><a href="http://blogs.fau.de/pp/files/2013/02/400.png"><img class="size-full wp-image-6973 aligncenter" alt="400" src="http://blogs.fau.de/pp/files/2013/02/400.png" width="150" height="150" /></a></p>
<p>What once started off with an idea, or a fruitless Google search for the perfect Icon, has now reached an incredible benchmark: the official <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> got its 400. icon!</p>
<p>&nbsp;</p>
<p>Because of this huge number of various icons and their different usage, the number of sub-folders has been expanded by two additional folders. Therefore the icons are now divided into:</p>
<ul>
<li>actions (technical actions, e.g.: sort, merge, send e-mails, etc.)</li>
</ul>
<ul>
<li>categories (different entitlement or categories, e.g.: employee, admin, user, etc.)</li>
</ul>
<ul>
<li>devices (generally IT-hardware, e.g.: server, databases, etc.)</li>
</ul>
<ul>
<li><b>NEW: documents (documents of all kind)</b></li>
</ul>
<ul>
<li><b> </b>emblems (the biggest folder concludes all icons which represent a label or a proper picture for an abstract term or function)</li>
</ul>
<ul>
<li><b>NEW: logos (here you can find icons which represent or conclude a logo)</b></li>
</ul>
<ul>
<li><b> </b>mime-types (icons for different media types, e.g.: text, video, audio, etc.)</li>
</ul>
<ul>
<li>status (icons that represent a status, e.g.: awaiting, approved, deleted, etc.)</li>
</ul>
<p>The <a href="http://rrze-icon-set.berlios.de/">RRZE own icon set</a> offers &#8220;tiny colorful pictures&#8221; for various IT topics, actions, functions and many more.</p>
<p>To create a consistent style the icons are made according to the style sheet of the Tango Icon Theme.</p>
<p>The icons are available in svg- (a more and a less detailed version for smaller scaled icons) and in png-format in the sizes 16&#215;16, 22&#215;22, 32&#215;32, 48&#215;48, 150&#215;150 and 720&#215;720 pixels and can be downloaded directly from the   <a href="http://rrze-icon-set.berlios.de/"> website </a>.</p>
<p>If the perfect icon for a purpose is still missing it can easily be added to the set. Therefore don&#8217;t hesitate to send a request e-mail to  franziska.sponsel@fau.de.</p>
<p>Important for the &#8220;Icon-Order&#8221; is that the following basic information is given and in the e-mail:</p>
<p>1. What function etc. should the icon represent? The best way is to explain it that even an ordinary person can understand it <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>2. Are there already ideas on how the icon should look like (e.g. a small house for &#8220;home&#8221;) or wishes for the icon&#8217;s color?</p>
<p>You should also keep in mind that, due to the small size of an icon, it can only consist of a maximum of 3 properties.</p>
<p>By now the <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> has reached the version number 2.3 and is used in various projects. Here in Erlangen, but also from whole Germany, India to the sunny state of California, USA.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2013/02/05/happy-birthday-rrze-icon-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbankserverwartung am Donnerstag, 08.11.2012</title>
		<link>http://blogs.fau.de/pp/2012/10/30/datenbankserverwartung-am-donnerstag-08-11-2012/</link>
		<comments>http://blogs.fau.de/pp/2012/10/30/datenbankserverwartung-am-donnerstag-08-11-2012/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 16:37:51 +0000</pubDate>
		<dc:creator>Andrea Grimm</dc:creator>
				<category><![CDATA[PV]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6959</guid>
		<description><![CDATA[Aufgrund einer erforderlichen Wartung des Datenbankservers stehen am  Donnerstag, 08. November 2012 zwischen 15.00 und 18.00 Uhr das Online-Portal mein campus (<a href="https://www.campus.uni-erlangen.de/">https://www.campus.uni-erlangen.de</a>)  und das Online-Portal der Graduiertenschule (<a href="http://www.docdaten.uni-erlangen.de/">http://www.docdaten.uni-erlangen.de</a>) nicht zur Verfügung.<p></p><p>Das Ende der Wartungsarbeiten wird durch Entfernen der Hinweise auf den jeweiligen Portalen mitgeteilt.</p><p></p><p>Wir bitten um Ihr Verständnis.</p>]]></description>
				<content:encoded><![CDATA[<p>Aufgrund einer erforderlichen Wartung des Datenbankservers stehen am  Donnerstag, 08. November 2012 zwischen 15.00 und 18.00 Uhr das Online-Portal mein campus (<a href="https://www.campus.uni-erlangen.de/">https://www.campus.uni-erlangen.de</a>)  und das Online-Portal der Graduiertenschule (<a href="http://www.docdaten.uni-erlangen.de/">http://www.docdaten.uni-erlangen.de</a>) nicht zur Verfügung.</p>
<p>Das Ende der Wartungsarbeiten wird durch Entfernen der Hinweise auf den jeweiligen Portalen mitgeteilt.</p>
<p>Wir bitten um Ihr Verständnis.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2012/10/30/datenbankserverwartung-am-donnerstag-08-11-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identity Management an der FAU – Hintergrund und aktueller Stand (Teil 3)</title>
		<link>http://blogs.fau.de/pp/2012/04/02/identity-management-an-der-fau-hintergrund-und-aktueller-stand-teil-3/</link>
		<comments>http://blogs.fau.de/pp/2012/04/02/identity-management-an-der-fau-hintergrund-und-aktueller-stand-teil-3/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 05:49:58 +0000</pubDate>
		<dc:creator>Frank Tröger</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[IdM]]></category>
		<category><![CDATA[IdMFAU]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6919</guid>
		<description><![CDATA[<h2>Hintergrund</h2><p>Im November 2006 startete das Projekt zum Aufbau einer zentralen Identity Management-Infrastruktur mit der Zielsetzung, eine Grundlage für die effiziente Nutzung der universitären IT-Dienste bereitzustellen (siehe <a href="http://rrze.fau.de/forschung/abgeschlossene-projekte/idm.shtml">Projektleitdokument</a> vom 20.12.2006). Die damals festgelegten strategischen Ziele haben bis heute Bestand:</p><p></p><p>	Bewältigung der steigenden Verwaltungsanforderungen</p><p>	Vermeidung duplizierter Datenbestände</p><p>	Erhöhung der Benutzerfreundlichkeit</p><p>	Entlastung der Sachbearbeiter und Administratoren</p><p>	Erhöhung der Datenqualität und Validität</p><p>	Erhöhung der Datensicherheit</p><p></p><p>Hinzu kam im Laufe des Projekts der Aspekt der Systemintegration, der durch ein IdMS nicht nur gefördert, sondern erst grundlegen ermöglicht wird.</p><p></p><p>Am 8. Oktober 2008 gingen erste Teile "hinter den Kulissen" in den produktiven Betrieb. Seitdem wurden auf dieser Basis eine Vielzahl von Erweiterungen entwickelt, welche das heutige IdMS letztendlich ausmachen. Das Grundkonzept blieb im Kern erhalten.</p><p></p><p>Alle folgenden Ausführungen beziehen sich auf den aktuellen Stand des Systems.</p><p><h2>Quellsysteme</h2></p><p>Als Quellsysteme werden Systeme bezeichnet, aus welchem das IdMS Daten liest. Die Quellsysteme des IdMS können grob in folgende Kategorien unterteilt werden:</p><p></p><p>	Personenverwaltungssysteme</p><p>	Strukturverwaltungssysteme</p><p>	Sonstige Systeme</p><p></p><p>Aktuell sind folgende Personenverwaltungssysteme angebunden:</p><p></p><p>	Stammdatensystem für Studierende HIS SOS</p><p>	Personalverwaltungssystem VIVA</p><p>	Indirekt über das IdM-nahe Personenverwaltungssystem für "Sonstige" (Yet Another AFFiliation, kurz yaaff) als Qualitätssicherungsschicht:</p><p></p><p>	Informationssystem UnivIS</p><p>	Promovierendenverwaltung docDaten</p><p>	Personenverwaltungssystem FAU Busan</p><p>	Sonstigenverwaltung RRZE</p><p></p><p></p><p></p><p>Der einzige Vertreter der Kategorie Strukturverwaltungssysteme ist die zentrale Anwendung zur Pflege der Organisationsstruktur FAU.ORG.</p><p></p><p>Vertreter der Kategorie "Sonstige Systeme" sind u.a. Systeme welche die Datenhoheit für mindestens ein Attribut besitzen. Zum Beispiel werden die offiziellen Mailadressen nicht im IdMS erzeugt bzw. festgelegt, sondern aus dem System zur Reservierung von Mailadressen abgefragt.</p><p><h2>Kern</h2></p><p>Der Kern des IdMS besteht aus einer Vielzahl von einzelnen Modulen. Während ein Teil der Module die korrekte Zusammenführung von Personeneinträgen aus unterschiedlichen Quellsystemen übernimmt, berechnet ein anderer Teil die ableitbaren Dienstleistungen. Allen gemein ist das zugrundeliegende Meta-Directory, also die IdMS gespeicherten Daten.</p><p></p><p>Änderungen in Quellsystemen sollen möglichst zeitnah aufbereitet und in alle betroffenen Systeme synchronisiert werden. Darunter fallen auch Aktionen der Anwender in den Web-Anwendungen; allen voran das Setzen eines neuen Passworts. Die Auswirkungen reichen von einfachen Wertänderungen in einem Attribut bis hin zur kompletten Neuanlage oder Löschung eines Kontos.</p><p><h2>Zielsysteme</h2></p><p>Als Zielsysteme werden Systeme bezeichnet, in welche das IdMS Daten schreibt. Aktuell sind folgende Zielsysteme angebunden:</p><p></p><p>	<a href="https://www.sso.uni-erlangen.de/">Zentraler Anmeldedienst der Universität Erlangen-Nürnberg (Single Sign-On)</a></p><p>	Studierendenverwaltung HIS SOS</p><p>	<a href="https://www.campus.uni-erlangen.de">mein campus</a></p><p>	<a href="https://www.docdaten.uni-erlangen.de/">Promovierendenverwaltung docDaten</a></p><p>	Mail-Adressen-Reservierungssystem der FAU</p><p>	Mail-Relay-System der FAU</p><p>	<a href="https://lists.uni-erlangen.de/">Mailinglistenverwaltung Mailman</a></p><p>	<a href="https://faumail.uni-erlangen.de">FAUmail (Dovecot)</a></p><p>	<a href="https://groupware.fau.de/owa">Windows Exchange</a></p><p>	Novell Groupwise</p><p>	<a href="http://www.eduroam.org/">WLAN eduroam</a></p><p>	Windows Active Directory (AD)</p><p>	Novell Directory Services (NDS)</p><p>	Versionskontrollsysteme via <a href="http://developer.berlios.de/projects/gvcsadmin/">gvcsadmin</a></p><p>	<a href="https://www.fauorg.zuv.uni-erlangen.de/">Web-Anwendung FAU.ORG</a></p><p>	Kartenproduktionssystem der FAUcard</p><p>	Bibliothekssystem SISIS</p><p>	"Alte" RRZE-Benutzerverwaltung</p><p>	Zutrittskontrollsystem Siport (im Aufbau)</p><p>	Forschungsdatenbank (im Aufbau)</p><p></p><p><h2>Frontends</h2></p><p>Als Frontends werden Systeme bezeichnet die beispielsweise im Rahmen einer Webanwendung Zugriff auf bestimmte Daten und Funktionen des IdMS bieten.</p><p><h3>IdM-Portal</h3></p><p>Das IdM-Portal gliedert sich derzeit in die Bereiche "Self Service" und "Anfragen/Aufgaben".</p><p></p><p>Der Self Service ermöglicht den im IdMS verwalteten Person die Einsicht von gespeicherten persönlichen Daten zum Zwecke der Datenschutzselbstauskunft. Desweiteren kann der Benutzer den Status der verfügbaren Dienstleistungen einsehen und Aktionen zur Konto- und Diensteverwaltung durchführen.</p><p></p><p>Der Bereich Anfragen/Aufgaben ermöglicht es, u.a. auch langlaufende Prozesse mit mehreren Beteiligten Personen einfach zu verwalten.</p><p><h3>Administration</h3></p><p>Die Administrationsfunktion im IdMS bietet Mitarbeitern des RRZE und der FAU mit Aufgaben im IdM-Umfeld erweiterten Zugriff auf die zur Durchführung nötigen Daten.</p><p></p><p>Dazu gehören z.B. die Mitarbeiter der Service-Theken, die so Benutzern bei Problemen mit ihrem IdM-Zugang oder einzelnen Dienstleistungen auf Anfrage Hilfestellung geben können. Die häufigsten Fälle sind das Wiederherstellen vergessener Passwörter und die Hilfe bei der Konfiguration einzelner Dienstleistungen.</p><p></p><p>Identitiy Management at the FAU - Background and Current State (Part 3)</p><p><h2>Background</h2></p><p>In November 2006 the project started to develop a central Identity Management Infrastructure with the aim to provide a basis for the efficient usage of university based IT services (see further  <a href="http://rrze.fau.de/forschung/abgeschlossene-projekte/idm.shtml">Projektleitdokument</a> from 20.12.2006). The then defined strategic aims are still existing today:</p><p></p><p>	Management of increasing administrative demands</p><p>	To avoid duplicated data storage</p><p>	Improvement of user friendliness</p><p>	Relief for employees and administrators</p><p>	Improvement of data quality and validity</p><p>	Improvement of data security</p><p></p><p>During the course of the project the aspect of system integration was added which can not only be advanced through an IdMS, but be enabled through it in the first place.</p><p></p><p>On 8. October 2008 first parts "behind the scenes" went into the productive area. Since then multiple enhancements were developed on this base, which in the end make today's IdMS. The basis concept remains unchanged.</p><p></p><p>All the following implementations are related to the current state of the system.</p><p><h2>Source System</h2></p><p>Systems are called source systems which are reading data from the IdMS. The source systems of the IdMS can roughly be separated in the following categories:</p><p></p><p>	Personal administration systems</p><p>	Structural administration systems</p><p>	Other systems</p><p></p><p>At the moment the following personal administration systems are included:</p><p></p><p>	Master data systems for students HIS SOS</p><p>	Personal administration system VIVA</p><p>	Indirectly via the near IdM personal administration system for "others" (Yet Another AFFiliation, short yaaff) as a layer for quality management:</p><p></p><p>	Information system UnivIS</p><p>	PhD-students administration docDaten</p><p>	Personal administration system FAU Busan</p><p>	Other management RRZE</p><p></p><p></p><p></p><p>The only representative of the category structural administration system is the central application to maintain the organizational structure FAU.ORG.</p><p></p><p>Representatives of the category "other systems" are for example systems which have data sovereignty for at least one attribute. For example official mail addresses are not created or defined in the IdMS but are questioned from the system for the reservation of mail addresses.</p><p><h2>Core</h2></p><p>The core of the IdMS consists of a multitude of single modules. Whereas a part of the modules takes the correct compilation of personal entries from different source systems, another part computes deducible services. They all have the underlying meta directory in common, thus the in IdMS saved data.</p><p></p><p>Changes in the source systems should be quickly prepared and synchronized with all the affected systems. These include actions of the users in web applications; especially the setting of a new password. The consequences range from simple value changes in one attribute to the complete new generation or deletion of an account.</p><p><h2>Target systems</h2></p><p>Systems are called target systems in which the IdMS writes its data. At the moment the following target systems are included:</p><p></p><p>	<a href="https://www.sso.uni-erlangen.de/">Central Sign-ON Service of the University Erlangen-Nuremberg (Single Sign-On)</a></p><p>	Student management HIS SOS</p><p>	<a href="https://www.campus.uni-erlangen.de">mein campus</a></p><p>	<a href="https://www.docdaten.uni-erlangen.de/">PhD-student management docDaten</a></p><p>	Mail Addresses Reservation System of the FAU</p><p>	Mail Relay System of the FAU</p><p>	<a href="https://lists.uni-erlangen.de/">Mailing list managment Mailman</a></p><p>	<a href="https://faumail.uni-erlangen.de">FAUmail (Dovecot)</a></p><p>	<a href="https://groupware.fau.de/owa">Windows Exchange</a></p><p>	Novell Groupwise</p><p>	<a href="http://www.eduroam.org/">WLAN eduroam</a></p><p>	Windows Active Directory (AD)</p><p>	Novell Directory Services (NDS)</p><p>	Version control system via <a href="http://developer.berlios.de/projects/gvcsadmin/">gvcsadmin</a></p><p>	<a href="https://www.fauorg.zuv.uni-erlangen.de/">Web Application FAU.ORG</a></p><p>	Card production system of the FAUcard</p><p>	Library system SISIS</p><p>	"Old" RRZE user management</p><p>	Access control system Siport (in development)</p><p>	Researchdatabase (in development)</p><p></p><p><h2>Front end</h2></p><p>Systems are called front end in the frame of a web application which provides access to certain data and function of the IdMS.</p><p><h3>IdM-Portal</h3></p><p>At the moment the IdM-Portal is structured in the areas "Self Service" and "Requests/Tasks".</p><p></p><p>The Self Service offers the persons who are managed in the IdMS to see the saved personal data in order of data privacy self information. Furthermore the user can see the status of the available services and can perform actions for account and service management.</p><p></p><p>The area requests/tasks offers, among others, to easily manage even long-term processes with multiple participants.</p><p><h3>Administration</h3></p><p>The administration function in the IdMS offers the RRZE and FAU employees with tasks within the IdM environment an extended access to the data which are needed for the implementation.</p><p></p><p>It includes e.g. the employees of the service counters who can therefore help users with problems according to their IdM account or individual services on demand. The most frequent cases are the restoration of forgotten passwords and the help with the configuration of individual services.</p><p></p><p>&nbsp;</p>]]></description>
				<content:encoded><![CDATA[<h2>Hintergrund</h2>
<p>Im November 2006 startete das Projekt zum Aufbau einer zentralen Identity Management-Infrastruktur mit der Zielsetzung, eine Grundlage für die effiziente Nutzung der universitären IT-Dienste bereitzustellen (siehe <a title="Abgeschlossene Projekte - IDMone" href="http://rrze.fau.de/forschung/abgeschlossene-projekte/idm.shtml" target="_blank">Projektleitdokument</a> vom 20.12.2006). Die damals festgelegten strategischen Ziele haben bis heute Bestand:</p>
<ul>
<li>Bewältigung der steigenden Verwaltungsanforderungen</li>
<li>Vermeidung duplizierter Datenbestände</li>
<li>Erhöhung der Benutzerfreundlichkeit</li>
<li>Entlastung der Sachbearbeiter und Administratoren</li>
<li>Erhöhung der Datenqualität und Validität</li>
<li>Erhöhung der Datensicherheit</li>
</ul>
<p>Hinzu kam im Laufe des Projekts der Aspekt der Systemintegration, der durch ein IdMS nicht nur gefördert, sondern erst grundlegen ermöglicht wird.</p>
<p>Am 8. Oktober 2008 gingen erste Teile &#8220;hinter den Kulissen&#8221; in den produktiven Betrieb. Seitdem wurden auf dieser Basis eine Vielzahl von Erweiterungen entwickelt, welche das heutige IdMS letztendlich ausmachen. Das Grundkonzept blieb im Kern erhalten.</p>
<p>Alle folgenden Ausführungen beziehen sich auf den aktuellen Stand des Systems.</p>
<h2>Quellsysteme</h2>
<p>Als Quellsysteme werden Systeme bezeichnet, aus welchem das IdMS Daten liest. Die Quellsysteme des IdMS können grob in folgende Kategorien unterteilt werden:</p>
<ul>
<li>Personenverwaltungssysteme</li>
<li>Strukturverwaltungssysteme</li>
<li>Sonstige Systeme</li>
</ul>
<p>Aktuell sind folgende Personenverwaltungssysteme angebunden:</p>
<ul>
<li>Stammdatensystem für Studierende HIS SOS</li>
<li>Personalverwaltungssystem VIVA</li>
<li>Indirekt über das IdM-nahe Personenverwaltungssystem für &#8220;Sonstige&#8221; (Yet Another AFFiliation, kurz yaaff) als Qualitätssicherungsschicht:
<ul>
<li>Informationssystem UnivIS</li>
<li>Promovierendenverwaltung docDaten</li>
<li>Personenverwaltungssystem FAU Busan</li>
<li>Sonstigenverwaltung RRZE</li>
</ul>
</li>
</ul>
<p>Der einzige Vertreter der Kategorie Strukturverwaltungssysteme ist die zentrale Anwendung zur Pflege der Organisationsstruktur FAU.ORG.</p>
<p>Vertreter der Kategorie &#8220;Sonstige Systeme&#8221; sind u.a. Systeme welche die Datenhoheit für mindestens ein Attribut besitzen. Zum Beispiel werden die offiziellen Mailadressen nicht im IdMS erzeugt bzw. festgelegt, sondern aus dem System zur Reservierung von Mailadressen abgefragt.</p>
<h2>Kern</h2>
<p>Der Kern des IdMS besteht aus einer Vielzahl von einzelnen Modulen. Während ein Teil der Module die korrekte Zusammenführung von Personeneinträgen aus unterschiedlichen Quellsystemen übernimmt, berechnet ein anderer Teil die ableitbaren Dienstleistungen. Allen gemein ist das zugrundeliegende Meta-Directory, also die IdMS gespeicherten Daten.</p>
<p>Änderungen in Quellsystemen sollen möglichst zeitnah aufbereitet und in alle betroffenen Systeme synchronisiert werden. Darunter fallen auch Aktionen der Anwender in den Web-Anwendungen; allen voran das Setzen eines neuen Passworts. Die Auswirkungen reichen von einfachen Wertänderungen in einem Attribut bis hin zur kompletten Neuanlage oder Löschung eines Kontos.</p>
<h2>Zielsysteme</h2>
<p>Als Zielsysteme werden Systeme bezeichnet, in welche das IdMS Daten schreibt. Aktuell sind folgende Zielsysteme angebunden:</p>
<ul>
<li><a href="https://www.sso.uni-erlangen.de/">Zentraler Anmeldedienst der Universität Erlangen-Nürnberg (Single Sign-On)</a></li>
<li>Studierendenverwaltung HIS SOS</li>
<li><a href="https://www.campus.uni-erlangen.de">mein campus</a></li>
<li><a href="https://www.docdaten.uni-erlangen.de/">Promovierendenverwaltung docDaten</a></li>
<li>Mail-Adressen-Reservierungssystem der FAU</li>
<li>Mail-Relay-System der FAU</li>
<li><a href="https://lists.uni-erlangen.de/" target="_blank">Mailinglistenverwaltung Mailman</a></li>
<li><a href="https://faumail.uni-erlangen.de">FAUmail (Dovecot)</a></li>
<li><a href="https://groupware.fau.de/owa">Windows Exchange</a></li>
<li>Novell Groupwise</li>
<li><a href="http://www.eduroam.org/" target="_blank">WLAN eduroam</a></li>
<li>Windows Active Directory (AD)</li>
<li>Novell Directory Services (NDS)</li>
<li>Versionskontrollsysteme via <a href="http://developer.berlios.de/projects/gvcsadmin/" target="_blank">gvcsadmin</a></li>
<li><a href="https://www.fauorg.zuv.uni-erlangen.de/">Web-Anwendung FAU.ORG</a></li>
<li>Kartenproduktionssystem der FAUcard</li>
<li>Bibliothekssystem SISIS</li>
<li>&#8220;Alte&#8221; RRZE-Benutzerverwaltung</li>
<li>Zutrittskontrollsystem Siport (im Aufbau)</li>
<li>Forschungsdatenbank (im Aufbau)</li>
</ul>
<h2>Frontends</h2>
<p>Als Frontends werden Systeme bezeichnet die beispielsweise im Rahmen einer Webanwendung Zugriff auf bestimmte Daten und Funktionen des IdMS bieten.</p>
<h3>IdM-Portal</h3>
<p>Das IdM-Portal gliedert sich derzeit in die Bereiche &#8220;Self Service&#8221; und &#8220;Anfragen/Aufgaben&#8221;.</p>
<p>Der Self Service ermöglicht den im IdMS verwalteten Person die Einsicht von gespeicherten persönlichen Daten zum Zwecke der Datenschutzselbstauskunft. Desweiteren kann der Benutzer den Status der verfügbaren Dienstleistungen einsehen und Aktionen zur Konto- und Diensteverwaltung durchführen.</p>
<p>Der Bereich Anfragen/Aufgaben ermöglicht es, u.a. auch langlaufende Prozesse mit mehreren Beteiligten Personen einfach zu verwalten.</p>
<h3>Administration</h3>
<p>Die Administrationsfunktion im IdMS bietet Mitarbeitern des RRZE und der FAU mit Aufgaben im IdM-Umfeld erweiterten Zugriff auf die zur Durchführung nötigen Daten.</p>
<p>Dazu gehören z.B. die Mitarbeiter der Service-Theken, die so Benutzern bei Problemen mit ihrem IdM-Zugang oder einzelnen Dienstleistungen auf Anfrage Hilfestellung geben können. Die häufigsten Fälle sind das Wiederherstellen vergessener Passwörter und die Hilfe bei der Konfiguration einzelner Dienstleistungen.</p>
<h4></h4>
<h4>Identitiy Management at the FAU &#8211; Background and Current State (Part 3)</h4>
<h2>Background</h2>
<p>In November 2006 the project started to develop a central Identity Management Infrastructure with the aim to provide a basis for the efficient usage of university based IT services (see further  <a title="Abgeschlossene Projekte - IDMone" href="http://rrze.fau.de/forschung/abgeschlossene-projekte/idm.shtml" target="_blank">Projektleitdokument</a> from 20.12.2006). The then defined strategic aims are still existing today:</p>
<ul>
<li>Management of increasing administrative demands</li>
<li>To avoid duplicated data storage</li>
<li>Improvement of user friendliness</li>
<li>Relief for employees and administrators</li>
<li>Improvement of data quality and validity</li>
<li>Improvement of data security</li>
</ul>
<p>During the course of the project the aspect of system integration was added which can not only be advanced through an IdMS, but be enabled through it in the first place.</p>
<p>On 8. October 2008 first parts &#8220;behind the scenes&#8221; went into the productive area. Since then multiple enhancements were developed on this base, which in the end make today&#8217;s IdMS. The basis concept remains unchanged.</p>
<p>All the following implementations are related to the current state of the system.</p>
<h2>Source System</h2>
<p>Systems are called source systems which are reading data from the IdMS. The source systems of the IdMS can roughly be separated in the following categories:</p>
<ul>
<li>Personal administration systems</li>
<li>Structural administration systems</li>
<li>Other systems</li>
</ul>
<p>At the moment the following personal administration systems are included:</p>
<ul>
<li>Master data systems for students HIS SOS</li>
<li>Personal administration system VIVA</li>
<li>Indirectly via the near IdM personal administration system for &#8220;others&#8221; (Yet Another AFFiliation, short yaaff) as a layer for quality management:
<ul>
<li>Information system UnivIS</li>
<li>PhD-students administration docDaten</li>
<li>Personal administration system FAU Busan</li>
<li>Other management RRZE</li>
</ul>
</li>
</ul>
<p>The only representative of the category structural administration system is the central application to maintain the organizational structure FAU.ORG.</p>
<p>Representatives of the category &#8220;other systems&#8221; are for example systems which have data sovereignty for at least one attribute. For example official mail addresses are not created or defined in the IdMS but are questioned from the system for the reservation of mail addresses.</p>
<h2>Core</h2>
<p>The core of the IdMS consists of a multitude of single modules. Whereas a part of the modules takes the correct compilation of personal entries from different source systems, another part computes deducible services. They all have the underlying meta directory in common, thus the in IdMS saved data.</p>
<p>Changes in the source systems should be quickly prepared and synchronized with all the affected systems. These include actions of the users in web applications; especially the setting of a new password. The consequences range from simple value changes in one attribute to the complete new generation or deletion of an account.</p>
<h2>Target systems</h2>
<p>Systems are called target systems in which the IdMS writes its data. At the moment the following target systems are included:</p>
<ul>
<li><a href="https://www.sso.uni-erlangen.de/">Central Sign-ON Service of the University Erlangen-Nuremberg (Single Sign-On)</a></li>
<li>Student management HIS SOS</li>
<li><a href="https://www.campus.uni-erlangen.de">mein campus</a></li>
<li><a href="https://www.docdaten.uni-erlangen.de/">PhD-student management docDaten</a></li>
<li>Mail Addresses Reservation System of the FAU</li>
<li>Mail Relay System of the FAU</li>
<li><a href="https://lists.uni-erlangen.de/" target="_blank">Mailing list managment Mailman</a></li>
<li><a href="https://faumail.uni-erlangen.de">FAUmail (Dovecot)</a></li>
<li><a href="https://groupware.fau.de/owa">Windows Exchange</a></li>
<li>Novell Groupwise</li>
<li><a href="http://www.eduroam.org/" target="_blank">WLAN eduroam</a></li>
<li>Windows Active Directory (AD)</li>
<li>Novell Directory Services (NDS)</li>
<li>Version control system via <a href="http://developer.berlios.de/projects/gvcsadmin/" target="_blank">gvcsadmin</a></li>
<li><a href="https://www.fauorg.zuv.uni-erlangen.de/">Web Application FAU.ORG</a></li>
<li>Card production system of the FAUcard</li>
<li>Library system SISIS</li>
<li>&#8220;Old&#8221; RRZE user management</li>
<li>Access control system Siport (in development)</li>
<li>Researchdatabase (in development)</li>
</ul>
<h2>Front end</h2>
<p>Systems are called front end in the frame of a web application which provides access to certain data and function of the IdMS.</p>
<h3>IdM-Portal</h3>
<p>At the moment the IdM-Portal is structured in the areas &#8220;Self Service&#8221; and &#8220;Requests/Tasks&#8221;.</p>
<p>The Self Service offers the persons who are managed in the IdMS to see the saved personal data in order of data privacy self information. Furthermore the user can see the status of the available services and can perform actions for account and service management.</p>
<p>The area requests/tasks offers, among others, to easily manage even long-term processes with multiple participants.</p>
<h3>Administration</h3>
<p>The administration function in the IdMS offers the RRZE and FAU employees with tasks within the IdM environment an extended access to the data which are needed for the implementation.</p>
<p>It includes e.g. the employees of the service counters who can therefore help users with problems according to their IdM account or individual services on demand. The most frequent cases are the restoration of forgotten passwords and the help with the configuration of individual services.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2012/04/02/identity-management-an-der-fau-hintergrund-und-aktueller-stand-teil-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Plugins &#8211; lokal und global / Grails Plugins &#8211; local and global</title>
		<link>http://blogs.fau.de/pp/2012/03/14/grails-plugins-lokal-und-global/</link>
		<comments>http://blogs.fau.de/pp/2012/03/14/grails-plugins-lokal-und-global/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 10:58:13 +0000</pubDate>
		<dc:creator>Florian Loeffler</dc:creator>
				<category><![CDATA[PPSA]]></category>
		<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6878</guid>
		<description><![CDATA[<a></a><a href="#English">English Version</a><p></p><p>Bei der Verwaltung von Grails Plugins in einem zentralen Repository gestaltet sich die lokale Weiterentwicklung der Plugins ggf. schwierig.</p><p></p><p>Mit dem folgenden Code-Block in der BuildConfig.groovy kann mittels des Kommandozeilenparameters -Dlive=... eines, oder mit</p><p>Komma getrennt, mehrere Plugins lokal geladen werden.</p><p></p><p>Wichtig ist dabei, dass neben dem Hauptprojekt auch <strong>alle</strong> Plugins mit diesem Code Block ausgestattet werden. So werden auch transitive Abhängigkeiten wie gewünscht mittels relativem Pfad oder aus dem Repository aufgelöst.</p><p></p><p>[groovy]</p><p>/*</p><p>* PPSA PLUGIN CONFIGURATION</p><p>*/</p><p>def runtimePlugins = [</p><p>    ":ppsa-menu:latest.release",</p><p>    ":ppsa-layout:latest.release",</p><p>]</p><p></p><p>/* ----- BEGIN: no changes past here ----- */</p><p>def live = System.getProperty("live")?System.getProperty("live").split(','):[]</p><p>def filteredLivePlugins = []</p><p>if (live) {</p><p>    filteredLivePlugins = live.inject([]) { list, lib -&gt;</p><p>        runtimePlugins.grep { it.contains(lib) } ? list &lt;&lt; lib : list</p><p>    }</p><p>    if (filteredLivePlugins) {</p><p>        println "[YOUR_PROJECT_NAME_HERE] Loading some plugins from relative paths in the workspace: " + filteredLive</p><p>        filteredLivePlugins.each { pluginName -&gt; grails.plugin.location."${pluginName}" = "../${pluginName}" }</p><p>    }</p><p>}</p><p>/* ----- END: no changes past here ----- */</p><p></p><p>grails.project.dependency.resolution = {</p><p>    plugins {</p><p>        def filteredRuntimePlugins = runtimePlugins.inject([]) { list, lib -&gt;</p><p>            filteredLivePlugins.grep { lib.contains(it) } ? list : list &lt;&lt; lib</p><p>        }</p><p>        if (filteredRuntimePlugins) {</p><p>            println "[YOUR_PROJECT_NAME_HERE] Loading plugins from release repository: " + filteredRuntimePlugins</p><p>            filteredRuntimePlugins.each { pluginDef -&gt; runtime "${pluginDef}" }</p><p>        }</p><p>    }</p><p>}</p><p>[/groovy]</p><p></p><p>Beispiel, wie man zur live Umgebung für das Plugin ppsa-layout wechseln kann:</p><p>[bash]</p><p>grails clean -Dlive=ppsa-layout</p><p>grails run-app -Dlive=ppsa-layout</p><p>[/bash]</p><p></p><p><a>Grails Plugins - local and global</a></p><p>With the management of Grails Plugins in a central repository the local further development of plugins could become quite difficult.</p><p></p><p>With the following Code Block in the  BuildConfig.groovy one or more plugins -- sepearted via commas -- can be loaded locally instead of from the repository with the help of the command line parameter  -Dlive=....</p><p></p><p>In order to also resolve transitive dependencies in this way it is important that beside the main project <strong>all</strong> plugins are also provided with this code block. This way also transitive dependencies can be loaded from a relative path or from the repository.</p><p></p><p>[groovy]</p><p>/*</p><p>* PPSA PLUGIN CONFIGURATION</p><p>*/</p><p>def runtimePlugins = [</p><p>    ":ppsa-menu:latest.release",</p><p>    ":ppsa-layout:latest.release",</p><p>]</p><p></p><p>/* ----- BEGIN: no changes past here ----- */</p><p>def live = System.getProperty("live")?System.getProperty("live").split(','):[]</p><p>def filteredLivePlugins = []</p><p>if (live) {</p><p>    filteredLivePlugins = live.inject([]) { list, lib -&gt;</p><p>        runtimePlugins.grep { it.contains(lib) } ? list &lt;&lt; lib : list</p><p>    }</p><p>    if (filteredLivePlugins) {</p><p>        println "[YOUR_PROJECT_NAME_HERE] Loading some plugins from relative paths in the workspace: " + filteredLive</p><p>        filteredLivePlugins.each { pluginName -&gt; grails.plugin.location."${pluginName}" = "../${pluginName}" }</p><p>    }</p><p>}</p><p>/* ----- END: no changes past here ----- */</p><p></p><p>grails.project.dependency.resolution = {</p><p>    plugins {</p><p>        def filteredRuntimePlugins = runtimePlugins.inject([]) { list, lib -&gt;</p><p>            filteredLivePlugins.grep { lib.contains(it) } ? list : list &lt;&lt; lib</p><p>        }</p><p>        if (filteredRuntimePlugins) {</p><p>            println "[YOUR_PROJECT_NAME_HERE] Loading plugins from release repository: " + filteredRuntimePlugins</p><p>            filteredRuntimePlugins.each { pluginDef -&gt; runtime "${pluginDef}" }</p><p>        }</p><p>    }</p><p>}</p><p>[/groovy]</p><p></p><p>Example on how to switch to the live environment for the plugin ppsa-layout:</p><p>[bash]</p><p>grails clean -Dlive=ppsa-layout</p><p>grails run-app -Dlive=ppsa-layout</p><p>[/bash]</p>]]></description>
				<content:encoded><![CDATA[<p><a></a><a href="#English">English Version</a></p>
<p>Bei der Verwaltung von Grails Plugins in einem zentralen Repository gestaltet sich die lokale Weiterentwicklung der Plugins ggf. schwierig.</p>
<p>Mit dem folgenden Code-Block in der <code>BuildConfig.groovy</code> kann mittels des Kommandozeilenparameters <code>-Dlive=...</code> eines, oder mit<br />
Komma getrennt, mehrere Plugins lokal geladen werden.</p>
<p>Wichtig ist dabei, dass neben dem Hauptprojekt auch <strong>alle</strong> Plugins mit diesem Code Block ausgestattet werden. So werden auch transitive Abhängigkeiten wie gewünscht mittels relativem Pfad oder aus dem Repository aufgelöst.</p>
<p>[groovy]<br />
/*<br />
* PPSA PLUGIN CONFIGURATION<br />
*/<br />
def runtimePlugins = [<br />
    ":ppsa-menu:latest.release",<br />
    ":ppsa-layout:latest.release",<br />
]</p>
<p>/* &#8212;&#8211; BEGIN: no changes past here &#8212;&#8211; */<br />
def live = System.getProperty(&#8220;live&#8221;)?System.getProperty(&#8220;live&#8221;).split(&#8216;,&#8217;):[]<br />
def filteredLivePlugins = []<br />
if (live) {<br />
    filteredLivePlugins = live.inject([]) { list, lib -&gt;<br />
        runtimePlugins.grep { it.contains(lib) } ? list &lt;&lt; lib : list<br />
    }<br />
    if (filteredLivePlugins) {<br />
        println &#8220;[YOUR_PROJECT_NAME_HERE] Loading some plugins from relative paths in the workspace: &#8221; + filteredLive<br />
        filteredLivePlugins.each { pluginName -&gt; grails.plugin.location.&#8221;${pluginName}&#8221; = &#8220;../${pluginName}&#8221; }<br />
    }<br />
}<br />
/* &#8212;&#8211; END: no changes past here &#8212;&#8211; */</p>
<p>grails.project.dependency.resolution = {<br />
    plugins {<br />
        def filteredRuntimePlugins = runtimePlugins.inject([]) { list, lib -&gt;<br />
            filteredLivePlugins.grep { lib.contains(it) } ? list : list &lt;&lt; lib<br />
        }<br />
        if (filteredRuntimePlugins) {<br />
            println &#8220;[YOUR_PROJECT_NAME_HERE] Loading plugins from release repository: &#8221; + filteredRuntimePlugins<br />
            filteredRuntimePlugins.each { pluginDef -&gt; runtime &#8220;${pluginDef}&#8221; }<br />
        }<br />
    }<br />
}<br />
[/groovy]</p>
<p>Beispiel, wie man zur live Umgebung für das Plugin <code>ppsa-layout</code> wechseln kann:<br />
[bash]<br />
grails clean -Dlive=ppsa-layout<br />
grails run-app -Dlive=ppsa-layout<br />
[/bash]</p>
<p><a name="English"><br />
<h4>Grails Plugins &#8211; local and global</h4>
<p></a><br />
With the management of Grails Plugins in a central repository the local further development of plugins could become quite difficult.</p>
<p>With the following Code Block in the  <code>BuildConfig.groovy</code> one or more plugins &#8212; sepearted via commas &#8212; can be loaded locally instead of from the repository with the help of the command line parameter  <code>-Dlive=...</code>.</p>
<p>In order to also resolve transitive dependencies in this way it is important that beside the main project <strong>all</strong> plugins are also provided with this code block. This way also transitive dependencies can be loaded from a relative path or from the repository.</p>
<p>[groovy]<br />
/*<br />
* PPSA PLUGIN CONFIGURATION<br />
*/<br />
def runtimePlugins = [<br />
    ":ppsa-menu:latest.release",<br />
    ":ppsa-layout:latest.release",<br />
]</p>
<p>/* &#8212;&#8211; BEGIN: no changes past here &#8212;&#8211; */<br />
def live = System.getProperty(&#8220;live&#8221;)?System.getProperty(&#8220;live&#8221;).split(&#8216;,&#8217;):[]<br />
def filteredLivePlugins = []<br />
if (live) {<br />
    filteredLivePlugins = live.inject([]) { list, lib -&gt;<br />
        runtimePlugins.grep { it.contains(lib) } ? list &lt;&lt; lib : list<br />
    }<br />
    if (filteredLivePlugins) {<br />
        println &#8220;[YOUR_PROJECT_NAME_HERE] Loading some plugins from relative paths in the workspace: &#8221; + filteredLive<br />
        filteredLivePlugins.each { pluginName -&gt; grails.plugin.location.&#8221;${pluginName}&#8221; = &#8220;../${pluginName}&#8221; }<br />
    }<br />
}<br />
/* &#8212;&#8211; END: no changes past here &#8212;&#8211; */</p>
<p>grails.project.dependency.resolution = {<br />
    plugins {<br />
        def filteredRuntimePlugins = runtimePlugins.inject([]) { list, lib -&gt;<br />
            filteredLivePlugins.grep { lib.contains(it) } ? list : list &lt;&lt; lib<br />
        }<br />
        if (filteredRuntimePlugins) {<br />
            println &#8220;[YOUR_PROJECT_NAME_HERE] Loading plugins from release repository: &#8221; + filteredRuntimePlugins<br />
            filteredRuntimePlugins.each { pluginDef -&gt; runtime &#8220;${pluginDef}&#8221; }<br />
        }<br />
    }<br />
}<br />
[/groovy]</p>
<p>Example on how to switch to the live environment for the plugin <code>ppsa-layout</code>:<br />
[bash]<br />
grails clean -Dlive=ppsa-layout<br />
grails run-app -Dlive=ppsa-layout<br />
[/bash]</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2012/03/14/grails-plugins-lokal-und-global/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Plugins in eigenem Maven Repository verwalten / Manage Grails Plugins in own Maven Repository</title>
		<link>http://blogs.fau.de/pp/2012/03/13/grails-plugins-in-eigenem-maven-repository-verwalten/</link>
		<comments>http://blogs.fau.de/pp/2012/03/13/grails-plugins-in-eigenem-maven-repository-verwalten/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 09:01:38 +0000</pubDate>
		<dc:creator>Florian Loeffler</dc:creator>
				<category><![CDATA[PPSA]]></category>
		<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6853</guid>
		<description><![CDATA[<a href="#English">English Version</a><p></p><p>In diesem Beitrag zeige ich kurz wie man Grails 2 Plugins als Releases in einem eigenen Maven Repository wie Archiva oder Artifactory verwalten kann. Dafür sind grundsätzlich zwei seperate Konfigurationen für Upload und Download vom Repository nötig.</p><p><h3>Upload</h3></p><p>Für das Releasen neuer Versionen in das eigene Repository bietet Grails 2 das <a href="http://www.grails.org/plugin/release">Release Plugin</a>, das man allerdings erst selbst nachinstallieren muss:</p><p>[bash]</p><p>grails install-plugin release</p><p>[/bash]</p><p></p><p>Die nötige Konfiguration dazu wird in die ~/.grails/settings.groovy ausgelagert. Einträge in dieser Datei gelten für alle Grails Projekte und sind äquivalent zu Einträgen in der BuildConfig.groovy.</p><p></p><p>Hier ein Beispiel zur Einrichtung von Archiva als Release Repository:</p><p>[groovy]</p><p>/*</p><p>* THIS IS FOR UPLOADING TO THE REPO (via release plugin)</p><p>* To use this do:</p><p>* grails2 install-plugin release</p><p>*/</p><p>grails.project.repos.default = "rrzeArchiva"</p><p></p><p>grails.project.repos.rrzeArchiva.url = "http://REPOSITORY:PORT/archiva/repository/internal/"</p><p>grails.project.repos.rrzeArchiva.username = "USERNAME"</p><p>grails.project.repos.rrzeArchiva.password = "PASSWORD"</p><p></p><p>// disable nagging about not having committed all changes...</p><p>grails.release.scm.enabled = false</p><p>[/groovy]</p><p></p><p>Das Beispiel Konfiguriert das rrzeArcchiva Repository als Default für Uploads und deaktiviert die SVN Überprüfung für nicht eingecheckte Änderungen.</p><p></p><p>Fertig.</p><p></p><p>Neue Releases können dann mit folgenden Build Targets ins Repository geladen bzw. in den lokalen Maven Cache installiert werden.</p><p>[bash]</p><p>grails maven-deploy</p><p>grails maven-install</p><p>[/bash]</p><p><h3>Download</h3></p><p>Für den automatischen Download von Plugins aus dem Repository sind folgende Einträge in der BuildConfig.groovy des Projektes nötig.</p><p>[groovy]</p><p>grails.project.dependency.resolution = {</p><p>repositories {</p><p>mavenLocal()</p><p>mavenRepo name:"rrzeArchiva", root:"http://REPOSITORY:PORT/archiva/repository/internal"</p><p>}</p><p>plugins {</p><p>runtime ":ppsa-menu:latest.release"</p><p>}</p><p>}</p><p>[/groovy]</p><p></p><p>Der Repositories Abschnitt Konfiguriert den lokalen Maven Cache und das Archiva Repository als zu durchsuchende Quellen für Plugin Abhängigkeiten.</p><p>Die Plugin Abhängigkeiten selbst werden im eigenen Abschnitt Plugins verwaltet. Der Beispieleintrag lädt immer die aktuellste Version des Plugins ppsa-menu.</p><p></p><p>Eigentlich würde das nun schon reichen, um Plugins auf dem Repository zu installieren.</p><p></p><p>Die allermeisten internen Repositories werden jedoch noch zusätzlich eine Authentifizierung erfordern. Hierfür muss noch der folgende Eintrag zur ~/.grails/settings.groovy hinzugefügt werden.</p><p>[groovy]</p><p>/*</p><p>* THIS IS FOR DOWNLOADING FROM THE REPO</p><p>* To use this add this to your BuildConfig.groovy:</p><p>* mavenRepo name:"rrzeArchiva", root:"http://REPOSITORY:PORT/archiva/repository/internal"</p><p>*/</p><p>grails.project.ivy.authentication = {</p><p>credentials {</p><p>realm = "Repository Archiva Managed internal Repository"</p><p>host = "REPOSITORY(ohne Port!)"</p><p>username = "USERNAME"</p><p>password = "PASSWORD"</p><p>}</p><p>}</p><p>[/groovy]</p><p></p><p><strong>---- WICHTIG ----</strong></p><p></p><p>Für Archiva muss der Realm wie angegeben konfiguriert werden. Sonst geht nix!</p><p></p><p>Außerdem muss der Host hier ohne Port angegeben werden. Wenn das Archiva also z.B. auf Port 8080 läuft ist diese Angabe hier wegzulassen.</p><p><strong>---- WICHTIG ----</strong></p><p></p><p><a><p>Managing Grails Plugins in own Maven Repository</p></a></p><p>&nbsp;</p><p></p><p>In this post I will briefly show how to manage Grails 2 Plugins as releases in an own Maven Repository such as Archiva or Artifactory. Therefore basically two separate configurations for Upload and Download from the repository are needed.</p><p><h3>Upload</h3></p><p>To release new versions in the own repository Graisl 2 offers the <a href="http://www.grails.org/plugin/release">Release Plugin</a>, which though must be installed additionally by yourself:</p><p>[bash]</p><p>grails install-plugin release</p><p>[/bash]</p><p></p><p>The necessary configuration for this is stored in the  ~/.grails/settings.groovy. Entries in this data are valid for all Grails projects and equivalent entries in the BuildConfig.groovy.</p><p></p><p>Here is an example of installing Archiva as release repository:</p><p>[groovy]</p><p>/*</p><p>* THIS IS FOR UPLOADING TO THE REPO (via release plugin)</p><p>* To use this do:</p><p>* grails2 install-plugin release</p><p>*/</p><p>grails.project.repos.default = "rrzeArchiva"</p><p></p><p>grails.project.repos.rrzeArchiva.url = "http://REPOSITORY:PORT/archiva/repository/internal/"</p><p>grails.project.repos.rrzeArchiva.username = "USERNAME"</p><p>grails.project.repos.rrzeArchiva.password = "PASSWORD"</p><p></p><p>// disable nagging about not having committed all changes...</p><p>grails.release.scm.enabled = false</p><p>[/groovy]</p><p></p><p>The example configures the rrzeArcchiva repository as Default for Uploads and deactivates the SVN proof for not-checked-in changes.</p><p></p><p>Done.</p><p></p><p>New releases can be loaded with the following Build Target in the Repository, respectively installed the local Maven Cache.</p><p>[bash]</p><p>grails maven-deploy</p><p>grails maven-install</p><p>[/bash]</p><p><h3>Download</h3></p><p>For the automatic download of plugins from the repository the following entries in the  BuildConfig.groovy of the project are needed.</p><p>[groovy]</p><p>grails.project.dependency.resolution = {</p><p>repositories {</p><p>mavenLocal()</p><p>mavenRepo name:"rrzeArchiva", root:"http://REPOSITORY:PORT/archiva/repository/internal"</p><p>}</p><p>plugins {</p><p>runtime ":ppsa-menu:latest.release"</p><p>}</p><p>}</p><p>[/groovy]</p><p></p><p>The repository paragraph configures the local Maven Cache and the Archiva Repository as sources for plugin dependencies which have to be browsed.</p><p>The plugin dependencies themselves are managed in the own paragraph plugins. The example entry is always loading the most current version of the plugin ppsa-menu.</p><p></p><p>Actually this would be enough to install plugins on the repository.</p><p></p><p>Most of all intern repositories will though need further authentication. Therefore the following entry has to be added ~/.grails/settings.groovy.</p><p>[groovy]</p><p>/*</p><p>* THIS IS FOR DOWNLOADING FROM THE REPO</p><p>* To use this add this to your BuildConfig.groovy:</p><p>* mavenRepo name:"rrzeArchiva", root:"http://REPOSITORY:PORT/archiva/repository/internal"</p><p>*/</p><p>grails.project.ivy.authentication = {</p><p>credentials {</p><p>realm = "Repository Archiva Managed internal Repository"</p><p>host = "REPOSITORY(ohne Port!)"</p><p>username = "USERNAME"</p><p>password = "PASSWORD"</p><p>}</p><p>}</p><p>[/groovy]</p><p></p><p><strong>---- IMPORTANT ----</strong></p><p></p><p>For Archiva the realm must be configured as shown. Or nothing will work!</p><p></p><p>Also, the Host must be stated here without Port. If the Archiva is also running e.g. on Port 8080 these information can be omitted here.</p><p><strong>---- IMPORTANT ----</strong></p>]]></description>
				<content:encoded><![CDATA[<p><a href="#English">English Version</a></p>
<p>In diesem Beitrag zeige ich kurz wie man Grails 2 Plugins als Releases in einem eigenen Maven Repository wie Archiva oder Artifactory verwalten kann. Dafür sind grundsätzlich zwei seperate Konfigurationen für Upload und Download vom Repository nötig.</p>
<h3>Upload</h3>
<p>Für das Releasen neuer Versionen in das eigene Repository bietet Grails 2 das <a href="http://www.grails.org/plugin/release">Release Plugin</a>, das man allerdings erst selbst nachinstallieren muss:<br />
[bash]<br />
grails install-plugin release<br />
[/bash]</p>
<p>Die nötige Konfiguration dazu wird in die <code>~/.grails/settings.groovy</code> ausgelagert. Einträge in dieser Datei gelten für alle Grails Projekte und sind äquivalent zu Einträgen in der <code>BuildConfig.groovy</code>.</p>
<p>Hier ein Beispiel zur Einrichtung von Archiva als Release Repository:<br />
[groovy]<br />
/*<br />
* THIS IS FOR UPLOADING TO THE REPO (via release plugin)<br />
* To use this do:<br />
* grails2 install-plugin release<br />
*/<br />
grails.project.repos.default = &#8220;rrzeArchiva&#8221;</p>
<p>grails.project.repos.rrzeArchiva.url = &#8220;http://REPOSITORY:PORT/archiva/repository/internal/&#8221;<br />
grails.project.repos.rrzeArchiva.username = &#8220;USERNAME&#8221;<br />
grails.project.repos.rrzeArchiva.password = &#8220;PASSWORD&#8221;</p>
<p>// disable nagging about not having committed all changes&#8230;<br />
grails.release.scm.enabled = false<br />
[/groovy]</p>
<p>Das Beispiel Konfiguriert das <code>rrzeArcchiva</code> Repository als Default für Uploads und deaktiviert die SVN Überprüfung für nicht eingecheckte Änderungen.</p>
<p>Fertig.</p>
<p>Neue Releases können dann mit folgenden Build Targets ins Repository geladen bzw. in den lokalen Maven Cache installiert werden.<br />
[bash]<br />
grails maven-deploy<br />
grails maven-install<br />
[/bash]</p>
<h3>Download</h3>
<p>Für den automatischen Download von Plugins aus dem Repository sind folgende Einträge in der <code>BuildConfig.groovy</code> des Projektes nötig.<br />
[groovy]<br />
grails.project.dependency.resolution = {<br />
repositories {<br />
mavenLocal()<br />
mavenRepo name:&#8221;rrzeArchiva&#8221;, root:&#8221;http://REPOSITORY:PORT/archiva/repository/internal&#8221;<br />
}<br />
plugins {<br />
runtime &#8220;:ppsa-menu:latest.release&#8221;<br />
}<br />
}<br />
[/groovy]</p>
<p>Der Repositories Abschnitt Konfiguriert den lokalen Maven Cache und das Archiva Repository als zu durchsuchende Quellen für Plugin Abhängigkeiten.<br />
Die Plugin Abhängigkeiten selbst werden im eigenen Abschnitt Plugins verwaltet. Der Beispieleintrag lädt immer die aktuellste Version des Plugins <code>ppsa-menu</code>.</p>
<p>Eigentlich würde das nun schon reichen, um Plugins auf dem Repository zu installieren.</p>
<p>Die allermeisten internen Repositories werden jedoch noch zusätzlich eine Authentifizierung erfordern. Hierfür muss noch der folgende Eintrag zur <code>~/.grails/settings.groovy</code> hinzugefügt werden.<br />
[groovy]<br />
/*<br />
* THIS IS FOR DOWNLOADING FROM THE REPO<br />
* To use this add this to your BuildConfig.groovy:<br />
* mavenRepo name:&#8221;rrzeArchiva&#8221;, root:&#8221;http://REPOSITORY:PORT/archiva/repository/internal&#8221;<br />
*/<br />
grails.project.ivy.authentication = {<br />
credentials {<br />
realm = &#8220;Repository Archiva Managed internal Repository&#8221;<br />
host = &#8220;REPOSITORY(ohne Port!)&#8221;<br />
username = &#8220;USERNAME&#8221;<br />
password = &#8220;PASSWORD&#8221;<br />
}<br />
}<br />
[/groovy]</p>
<p><strong>&#8212;- WICHTIG &#8212;-</strong></p>
<p>Für Archiva muss der Realm wie angegeben konfiguriert werden. Sonst geht nix!</p>
<p>Außerdem muss der Host hier <span style="text-decoration: underline">ohne</span> Port angegeben werden. Wenn das Archiva also z.B. auf Port 8080 läuft ist diese Angabe hier <span style="text-decoration: underline">wegzulassen</span>.<br />
<strong>&#8212;- WICHTIG &#8212;-</strong></p>
<p><a name="English"></p>
<h4>Managing Grails Plugins in own Maven Repository</h4>
<p></a><br />
&nbsp;</p>
<p>In this post I will briefly show how to manage Grails 2 Plugins as releases in an own Maven Repository such as Archiva or Artifactory. Therefore basically two separate configurations for Upload and Download from the repository are needed.</p>
<h3>Upload</h3>
<p>To release new versions in the own repository Graisl 2 offers the <a href="http://www.grails.org/plugin/release">Release Plugin</a>, which though must be installed additionally by yourself:<br />
[bash]<br />
grails install-plugin release<br />
[/bash]</p>
<p>The necessary configuration for this is stored in the  <code>~/.grails/settings.groovy</code>. Entries in this data are valid for all Grails projects and equivalent entries in the <code>BuildConfig.groovy</code>.</p>
<p>Here is an example of installing Archiva as release repository:<br />
[groovy]<br />
/*<br />
* THIS IS FOR UPLOADING TO THE REPO (via release plugin)<br />
* To use this do:<br />
* grails2 install-plugin release<br />
*/<br />
grails.project.repos.default = &#8220;rrzeArchiva&#8221;</p>
<p>grails.project.repos.rrzeArchiva.url = &#8220;http://REPOSITORY:PORT/archiva/repository/internal/&#8221;<br />
grails.project.repos.rrzeArchiva.username = &#8220;USERNAME&#8221;<br />
grails.project.repos.rrzeArchiva.password = &#8220;PASSWORD&#8221;</p>
<p>// disable nagging about not having committed all changes&#8230;<br />
grails.release.scm.enabled = false<br />
[/groovy]</p>
<p>The example configures the <code>rrzeArcchiva</code> repository as Default for Uploads and deactivates the SVN proof for not-checked-in changes.</p>
<p>Done.</p>
<p>New releases can be loaded with the following Build Target in the Repository, respectively installed the local Maven Cache.<br />
[bash]<br />
grails maven-deploy<br />
grails maven-install<br />
[/bash]</p>
<h3>Download</h3>
<p>For the automatic download of plugins from the repository the following entries in the  <code>BuildConfig.groovy</code> of the project are needed.<br />
[groovy]<br />
grails.project.dependency.resolution = {<br />
repositories {<br />
mavenLocal()<br />
mavenRepo name:&#8221;rrzeArchiva&#8221;, root:&#8221;http://REPOSITORY:PORT/archiva/repository/internal&#8221;<br />
}<br />
plugins {<br />
runtime &#8220;:ppsa-menu:latest.release&#8221;<br />
}<br />
}<br />
[/groovy]</p>
<p>The repository paragraph configures the local Maven Cache and the Archiva Repository as sources for plugin dependencies which have to be browsed.<br />
The plugin dependencies themselves are managed in the own paragraph plugins. The example entry is always loading the most current version of the plugin <code>ppsa-menu</code>.</p>
<p>Actually this would be enough to install plugins on the repository.</p>
<p>Most of all intern repositories will though need further authentication. Therefore the following entry has to be added <code>~/.grails/settings.groovy</code>.<br />
[groovy]<br />
/*<br />
* THIS IS FOR DOWNLOADING FROM THE REPO<br />
* To use this add this to your BuildConfig.groovy:<br />
* mavenRepo name:&#8221;rrzeArchiva&#8221;, root:&#8221;http://REPOSITORY:PORT/archiva/repository/internal&#8221;<br />
*/<br />
grails.project.ivy.authentication = {<br />
credentials {<br />
realm = &#8220;Repository Archiva Managed internal Repository&#8221;<br />
host = &#8220;REPOSITORY(ohne Port!)&#8221;<br />
username = &#8220;USERNAME&#8221;<br />
password = &#8220;PASSWORD&#8221;<br />
}<br />
}<br />
[/groovy]</p>
<p><strong>&#8212;- IMPORTANT &#8212;-</strong></p>
<p>For Archiva the realm must be configured as shown. Or nothing will work!</p>
<p>Also, the Host must be stated here without Port. If the Archiva is also running e.g. on Port 8080 these information can be omitted here.<br />
<strong>&#8212;- IMPORTANT &#8212;-</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2012/03/13/grails-plugins-in-eigenem-maven-repository-verwalten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identity Management an der FAU &#8211; Studierendenverwaltung (Teil 2)</title>
		<link>http://blogs.fau.de/pp/2012/02/02/identity-management-an-der-fau-studierendenverwaltung-teil-2/</link>
		<comments>http://blogs.fau.de/pp/2012/02/02/identity-management-an-der-fau-studierendenverwaltung-teil-2/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:42:35 +0000</pubDate>
		<dc:creator>Frank Tröger</dc:creator>
				<category><![CDATA[IdM]]></category>
		<category><![CDATA[IdMFAU]]></category>
		<category><![CDATA[Übersicht]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6784</guid>
		<description><![CDATA[<h2>Quellsysteme</h2><p>Wenn im Identity Management (IdM) Bereich von Quellsystemen die Rede ist, denkt man häufig sofort an Personenverwaltungen. Die Bereitstellung von Informationen zu Personen ist sicherlich die bedeutendste und außenwirksamste Variante. Quellsysteme eines IdMS können jedoch ganz unterschiedlicher Natur sein. U.a. gehören auch die Lieferung von Daten zur Organisationsstruktur, Mailadressen oder Funktionen in die Kategorie der Quellsysteme. Allen gemeinsam ist, dass sie Informationen bereitstellen, die von anderen, meist mehreren, Systemen genutzt werden.</p><p></p><p><h3>HIS SOS</h3></p><p>Eines der ersten angebundenen Systeme des IdMS an der FAU war die Studierendenverwaltung vertreten durch HIS-SOS. Die Bereitstellung der Daten besteht im Wesentlichen aus zwei Datenbank-Views:</p><p> • idm student</p><p> • idm stg</p><p>idm student enthält alle erforderlichen Informationen zur Person der Studierenden. Analog enthält idm stg alle erforderlichen Informationen zum Studium. Verbunden sind beide Views durch die Matrikelnummer, welche gleichzeitig in beiden Fällen den Primärschlüssel für die IdM-Anbindung darstellt.</p><p><h2></h2></p><p>Zum Auslesen der beiden Views kommt der JDBC-Treiber von Novells Identity Manager zum Einsatz. Um den Aufwand auf Seiten der Betreiber der Studierendenverwaltung gering zu halten, kommt keine Triggertabelle zum Einsatz. Der Vorteil einer Triggertabelle wäre die direkte Bereitstellung aller Änderungen. Der Treiber kann durch ein Lesen dieser Tabelle erkennen, ob Änderungen vorliegen. Falls ja kann er je nach Art der Triggertabelle alle Informationen zur vorliegenden Änderung direkt auslesen, oder nur die betroffenen Datensätze aus den Views holen. Ohne Triggertabelle muss der Treiber die Änderungen durch einen Vergleich mit seiner internen Kopie der Daten selbst erkennen. Liegen keine Änderungen vor, wäre in der Triggertabelle kein Eintrag und die Arbeit des Treibers wäre erledigt; ohne Triggertabelle müssen immer alle Einträge überprüft werden. Aktuell benötigt der Treiber für diese Aufgabe etwas unter 5 Minuten (inkl. SELECT) für beide Views mit je über 60.000 Einträgen. Bei einem Polling-Intervall von aktuell 5 Minuten ist der Treiber in der aktuellen Konfiguration daher am Limit.</p><p>Die Synchronisierung der beiden Views in Richtung IdMS wird in den folgenden Abschnitten näher erläutert. Dabei werden grundlegende Kenntnisse des Treiber-Konzeptes von Novell Identity Manager vorausgesetzt. Eine schematische Übersicht liefert Abbildung 3.1.</p><p><h2><a href="http://blogs.fau.de/pp/files/2012/02/driver_sos.png"><img src="http://blogs.fau.de/pp/files/2012/02/driver_sos-163x300.png" width="163" height="300" /></a></h2></p><p><strong>Abbildung 3.1</strong>: Treiber Sos</p><p>View idm student</p><p>&nbsp;</p><p></p><p>Tabelle 3.3 zeigt das Schema-Mapping und die Filter-Einstellung zwischen dem View idm student und der Objektklasse User (aka inetOrgPerson) im Meta-Directory (MD). In der ”Input Transformation Policy“ wird das Attribut Geschlecht (geschl) anhand der in Tabelle 3.1 aufgeführten Abbildung umgesetzt. Wie in Tabelle 3.3 ersichtlich wird im MD das Attribut schacGender des SCHema for ACademia 2 (SCHAC) verwendet, welches den Standard ISO 5218 einsetzt. Demzufolge werden die Werte wie in Tabelle 3.2 dargestellt interpretiert.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" width="407" height="108" /></a></p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" width="395" height="123" /></a></p><p></p><p>Die ”Matching Policy“ besteht im Wesentlichen aus zwei Teilen. Grundsätzlich wird versucht einen bereits im MD existierenden Personeneintrag zu finden und mit dem neuen Eintrag aus SOS zu verbinden. Ist ein Matching erfolgreich, werden die darauffolgenden Versuche unterlassen; die Reihenfolge ist also entscheidend.</p><p>Den ersten Versuch könnte man als ”Standard-Matching“ bezeichnen. Ein bereits aus SOS synchronisierter Eintrag soll damit wiedergefunden werden. Wurde der Eintrag in SOS entfernt und wieder mit der gleichen Matrikelnummer angelegt oder hat der Treiber aus anderen Gründen seine Assoziation (DirXML-Association) verloren, soll diese wiederhergestellt werden. Um dies zu gewährleisten wird ein Matching auf Basis des Primärschlüssels der Anbindung, in diesem Fall also die Matrikelnummer, durchgeführt. Hier wird die Matrikelnummer der Reihe nach in folgenden Attributen gesucht:</p><p>1. Attribut fauStudPK</p><p></p><p>2. Attribut fauStudPKOld</p><p>HIS SOS</p><p>Die Suche im Attribut fauStudPK stellt sicher, dass keine zwei Einträge mit der gleichen Matrikelnummer im MD existieren bzw. erzeugt werden. Die Suche im Attribut fauStudPKOld soll bereits exmatrikulierte Studierendeneinträge finden. Werden Einträge im View idm student gelöscht oder exmatrikuliert, wird die Matrikelnummer aus dem Attribut fauStudPK in das Attribut fauStudPKOld verschoben. Dieser Fall findet also z.B. Wiedereinschreiber.</p><p>Das zweite Matching versucht den neuen Studierendeneintrag anhand der Attribute Vorname, Nachname, Geburtsdatum und Geburtsort beliebigen Personeneinträgen im MD (normalerweise aus anderen Quellsystemen) zuzuordnen. Hierbei kommt das eigens erstellte Framework Data Linkage (DaLi) zum Einsatz. Eine komplette Beschreibung von DaLi würde den Rahmen dieses  Artikels sprengen, weshalb hier nur die für die Einbettung in die Treiber-Logik notwendigen Teile erlaütert werden. Die grundlegende Funktionsweise einer frühen Version des Frameworks können den Folien des Vortrags von Krasimir Zhelev beim ZKI-Arbeitskreis für Verzeichnisdienste vom 06.Oktober 2009 3 entnommen werden.</p><p>Zum Zeitpunkt der Anbindung sollte das Matching-Modul möglichst ohne Abhängigkeit zu einem externen Dienst in die Treiber-Landschaft von Novell eingebettet werden. Zu diesem Zweck wurde aus DaLi ein einfaches Jar-Archiv entwickelt, welches nach Eingabe einer Person und möglicher Matching-Kandidaten die besten Treffer mit den Wahrscheinlichkeitswerten ausgibt. Die Einbindung des sog. ”Matching Processor“ erfolgt über eine Namespace- Definition der Matching Policy. Wie in Abbildung 3.2 ersichltlich wird die Java-Klasse de.rrze.idmone.utils.matching.MatchingProcessor an den Namespace matchingProcessor gebunden.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/namespace_matching.png"><img src="http://blogs.fau.de/pp/files/2012/02/namespace_matching-300x155.png" width="300" height="155" /></a></p><p></p><p><strong>Abbildung 3.2</strong>: Matching Policy Namespace Definition</p><p></p><p>Die eigentliche Verwendung zeigt Abbildung 3.3. In der ersten Zeile wird der Matching Processor instanziert. Dabei werden die Attribute des neuen Personeneintrags übergeben. In der einfachen vereinfachten Version müssen alle möglichen Kandidaten im MD gesucht werden und mittels der Methode addNodeSet übergeben werden. Dabei kann die Methode mehrfach aufgerufen werden um weitere Suchergebnisse hinzuzufügen. Der Methodenaufruf nodeSetMatching startet die Auswertung. In der aktuellen Version vergleicht DaLi über 10000 Kandidaten innerhalb einer Zehntelsekunde. Die Beschränkung liegt hier eindeutig bei den LDAP-Suchen im MD. Nach der Auswertung können die Trefferwahrscheinlichkeiten abgefragt werden. Die Entscheidung ob der neue Eintrag mit einem existierenden Eintrag zusammengeführt wird bleibt so im Treiber bestehen.</p><p>Wird kein vorhandener Personeneintrag gematcht folgt die ”Creation Policy“. Hier findet die Überprüfung der zwingend erforderlichen Attribute statt. Fehlt eines dieser Attribute wird die Anlage verweigert. Sind alle erforderlichen Attribute vorhanden wird in der “Placement Policy” der DN des neuen Personeneintrags festgelegt. Dieser wird aus dem Personencontainer, einem eindeutigen Treiber-Prefix und der Matrikelnummer gebildet. Im Anschluss werden einige Attribute für einen neuen Personeneintrag gesetzt. Darunter fallen z.B. die initiale Gruppenmitgliedschaft und ein Anfangspasswort.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/matching_processor1.png"><img src="http://blogs.fau.de/pp/files/2012/02/matching_processor1-300x93.png" width="300" height="93" /></a></p><p></p><p><strong>Abbildung 3.3</strong>: Verwendung des Matching Processor</p><p></p><p>In der ”Command Policy“ werden weitere Aktionen sowohl bei der Neuanlage als auch bei Aktualisierungen durchgeführt. So werden z.B. Löschungen in SOS in die bereits erwähnte Verschiebung der Matrikelnummer in das Attribut fauStudPKOld umgewandelt. Weiterhin findet eine Verlinkung mit dem evtl. bereits synchronisierten Informationen zum Studium statt, oder die Entscheidung ob eine vorhandene Kontaktadresse überschrieben werden soll.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" width="476" height="566" /></a></p><p><h2>Identity Management at the FAU - Student Management (Part 2)</h2></p><p>&nbsp;</p><p></p><p>&nbsp;</p><p><h3>Source Systems</h3></p><p>If within the Identity Management (IdM) area the topic source system appears you might immediately think about personnel management. The provision of information about persons is surely the most important variety and most affective to the outside.   Source systems however can be of very different kind. Among others the delivery of data for the organizational structure, mail addresses or functions belong to the category source systems. They all have in common that they provide information which is usually used of several systems.</p><p></p><p>&nbsp;</p><p><h3>HIS SOS</h3></p><p>One of the first connected systems of the IdMS at the FAU was the student management, represented by HIS SOS. The provision of data basically consists of two database views:</p><p> • idm student</p><p> • idm stg</p><p>idm student consists every needed information about the person of the student. Analogously idm stg  contains every needed information about the studies. Both views are connected with the matriculation number which is at the same point the primary key for the IdM connection.</p><p><h2></h2></p><p>To readout both of the views Novells Identity Manager is used. To keep the effort for the user of the student management at a minimum, no trigger tables are used. The benefit of a trigger table would be the direct provision of all the changes. The driver can only notice changes through reading this table. If yes, it can, depending on the kind of trigger table, directly readout all the information about the existing changes, or can only get the affected data sets of the views. Without trigger tables the driver has to find the changes by itself via a comparison with its intern data copy. If there are no changes there would be no entry in the trigger table and the work of the driver would be done; without trigger tables all the entries have to be proven every time. At the moment the driver needs not more than 5 minutes (incl. SELECT) for both views with 60000 entries each. With a Polling Interval of currently 5 minutes the driver is at its limit with the current configurations.</p><p>The synchronization of both views in direction IdMS will be discussed in details in the following chapters. Therefore basic knowledge of the driver concept of Novell's Identity Management is required. Illustration 3.1. gives a schematic overview.</p><p><h2><a href="http://blogs.fau.de/pp/files/2012/02/driver_sos.png"><img src="http://blogs.fau.de/pp/files/2012/02/driver_sos-163x300.png" width="163" height="300" /></a></h2></p><p><strong>Illlustration 3.1</strong>: Driver Sos</p><p>View idm student</p><p>&nbsp;</p><p></p><p>Table 3.3 shows the schema mapping and filter adjustments between the view idm student and the object class user (aka inetOrg Person) in the Meta-Directory (MD). In the ”Input Transformation Policy“ the attribute gender (geschl) is implemented according to the in table 3.1. shown illustration. As in table 3.3 shown the attribute schacGender of the SCHema for ACademia 2 (SCHAC) is used which inserts the ISO 5218 standard. Therefore the data are interpreted as shown in table 3.2.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" width="407" height="108" /></a></p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" width="395" height="123" /></a></p><p></p><p>The ”Matching Policy“ basically consists of two parts. Generally it is tried to find an already existing person entry in the MD and to connect it with the new SOS entry. If the matching is successfully, the following tries are omitted; so the order is important.</p><p>The first try could be called "Standard-Matching". An already from SOS synchronized entry should be recovered with it. If the entry has been deleted in SOS and was again created with the same matriculation number or the driver lost its associations because of other reasons (DirXML-Association), it should be recovered. To guarantee this a matching base on the primary key of the connection, in this case the matriculation number, is made. Here it is searched for the matriculation number in the following attributes:</p><p>1. Attribut fauStudPK</p><p></p><p>2. Attribut fauStudPKOld</p><p>HIS SOS</p><p>The search in the attribute fauStudPK makes sure that there aren't two entries with the same matriculation number existing or created in the MD. The search in the attribute fauStudPKOld is supposed to find already ex-matriculated student entries. If entries in the View idm student are deleted or ex-matriculated, the matriculation number is moved from the attribute fauStudPK to the attribute fauStudPKOld. So this case finds e.g. again matriculated students.</p><p>The second matching tries to assign the new student entry according to the attribute given name, last name, date of birth and place of birth, to any personal entry in the MD (usually from different source systems). Therefore the self created Framework Data Linkage (DaLi) is used. A complete description of DaLi would go beyond the scope of this article and that is the reason why only the embedding of the driver logic are explained. The fundamental operation mode of an earlier version of the framework can be found in the slides of a presentation by Krasimir Zhelev of the ZKI-Workinggroup for account services on 6th October 2009 3.</p><p>At the moment of the connection, the matching module should be embedded into the driver-landscape of Novell preferably without any dependency to an external service. For this reason DaLi was developed from a simple Jar-Archive which displays the best matches with the highest rates on possibility after the insertion of a person and possible matching candidates. The embedding of so called "Matching Processor" results from a namespace definition of the matching policy. As shown in illustration 3.2 the Java-class de.rrze.idmone.utils.matching. MatchingProcessor is bound to the namespace matchingProcessor.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/namespace_matching.png"><img src="http://blogs.fau.de/pp/files/2012/02/namespace_matching-300x155.png" width="300" height="155" /></a></p><p></p><p><strong>Illustration 3.2</strong>: Matching Policy Namespace Definition</p><p></p><p>The actual use is shown in illustration 3.3. In the first line the matching processor is instanced. Therefore the attributes of the new personal entry are committed. In the easiest simplified version ever candidate has to be find in the MD and be delivered with the addNodeSet method. Therefore the method can be multiply selected to add further search results. The method request nodeSetMatching starts the analysis. In the current version DaLi compares over 10000 candidates within the tenth of a second. The limitation here lies definitely in the LDAP-search in the MD. After the analysis the possibility of a hit can be requested. The decision if a new entry should be combined with an already existing entry will stay within the driver.</p><p>If there is no existing personal entry matched, the "Creation Policy" follows. Here the testing of the obligatory attributes happen. If one of the attributes is missing the construction is denied. If every necessary attribute is available, a new person entry is defined  in the "Placement Policy" of the DN in the new person entry. This is build from the person container, a definite driver prefix and the matriculation number. Subsequently some attributes are set for a new person entry. Within these are e.g. the initial group membership and an initial password.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/matching_processor1.png"><img src="http://blogs.fau.de/pp/files/2012/02/matching_processor1-300x93.png" width="300" height="93" /></a></p><p></p><p><strong>Illustration 3.3</strong>: Use of the Matching Processor</p><p></p><p>In the ”Command Policy“ further actions are performed as well with a new entry as with updates. So e.g. deletion in SOS are converted in the already mentioned movement of the matriculation number into the fauStudPKOld attribute. Furthermore a linkage between the possibly  already synchronized information according to the studies takes place, or the decision if an already existing contact address should be overwritten.</p><p></p><p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" width="476" height="566" /></a></p><p></p><p>&nbsp;</p>]]></description>
				<content:encoded><![CDATA[<h2>Quellsysteme</h2>
<p>Wenn im Identity Management (IdM) Bereich von Quellsystemen die Rede ist, denkt man häufig sofort an Personenverwaltungen. Die Bereitstellung von Informationen zu Personen ist sicherlich die bedeutendste und außenwirksamste Variante. Quellsysteme eines IdMS können jedoch ganz unterschiedlicher Natur sein. U.a. gehören auch die Lieferung von Daten zur Organisationsstruktur, Mailadressen oder Funktionen in die Kategorie der Quellsysteme. Allen gemeinsam ist, dass sie Informationen bereitstellen, die von anderen, meist mehreren, Systemen genutzt werden.</p>
<h3>HIS SOS</h3>
<p>Eines der ersten angebundenen Systeme des IdMS an der FAU war die Studierendenverwaltung vertreten durch HIS-SOS. Die Bereitstellung der Daten besteht im Wesentlichen aus zwei Datenbank-Views:</p>
<pre> • idm student
 • idm stg</pre>
<p>idm student enthält alle erforderlichen Informationen zur Person der Studierenden. Analog enthält idm stg alle erforderlichen Informationen zum Studium. Verbunden sind beide Views durch die Matrikelnummer, welche gleichzeitig in beiden Fällen den Primärschlüssel für die IdM-Anbindung darstellt.</p>
<h2></h2>
<p>Zum Auslesen der beiden Views kommt der JDBC-Treiber von Novells Identity Manager zum Einsatz. Um den Aufwand auf Seiten der Betreiber der Studierendenverwaltung gering zu halten, kommt keine Triggertabelle zum Einsatz. Der Vorteil einer Triggertabelle wäre die direkte Bereitstellung aller Änderungen. Der Treiber kann durch ein Lesen dieser Tabelle erkennen, ob Änderungen vorliegen. Falls ja kann er je nach Art der Triggertabelle alle Informationen zur vorliegenden Änderung direkt auslesen, oder nur die betroffenen Datensätze aus den Views holen. Ohne Triggertabelle muss der Treiber die Änderungen durch einen Vergleich mit seiner internen Kopie der Daten selbst erkennen. Liegen keine Änderungen vor, wäre in der Triggertabelle kein Eintrag und die Arbeit des Treibers wäre erledigt; ohne Triggertabelle müssen immer alle Einträge überprüft werden. Aktuell benötigt der Treiber für diese Aufgabe etwas unter 5 Minuten (inkl. SELECT) für beide Views mit je über 60.000 Einträgen. Bei einem Polling-Intervall von aktuell 5 Minuten ist der Treiber in der aktuellen Konfiguration daher am Limit.<br />
Die Synchronisierung der beiden Views in Richtung IdMS wird in den folgenden Abschnitten näher erläutert. Dabei werden grundlegende Kenntnisse des Treiber-Konzeptes von Novell Identity Manager vorausgesetzt. Eine schematische Übersicht liefert Abbildung 3.1.</p>
<h2><a href="http://blogs.fau.de/pp/files/2012/02/driver_sos.png" rel="lightbox[6784]"><img class="size-medium wp-image-6796 " src="http://blogs.fau.de/pp/files/2012/02/driver_sos-163x300.png" alt="" width="163" height="300" /></a></h2>
<p><strong>Abbildung 3.1</strong>: Treiber Sos</p>
<h4>View idm student</h4>
<p>&nbsp;</p>
<p>Tabelle 3.3 zeigt das Schema-Mapping und die Filter-Einstellung zwischen dem View idm student und der Objektklasse User (aka inetOrgPerson) im Meta-Directory (MD). In der ”Input Transformation Policy“ wird das Attribut Geschlecht (geschl) anhand der in Tabelle 3.1 aufgeführten Abbildung umgesetzt. Wie in Tabelle 3.3 ersichtlich wird im MD das Attribut schacGender des SCHema for ACademia 2 (SCHAC) verwendet, welches den Standard ISO 5218 einsetzt. Demzufolge werden die Werte wie in Tabelle 3.2 dargestellt interpretiert.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" rel="lightbox[6784]"><img class="alignnone size-full wp-image-6804" src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" alt="" width="407" height="108" /></a></p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" rel="lightbox[6784]"><img class="alignnone size-full wp-image-6805" src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" alt="" width="395" height="123" /></a></p>
<p>Die ”Matching Policy“ besteht im Wesentlichen aus zwei Teilen. Grundsätzlich wird versucht einen bereits im MD existierenden Personeneintrag zu finden und mit dem neuen Eintrag aus SOS zu verbinden. Ist ein Matching erfolgreich, werden die darauffolgenden Versuche unterlassen; die Reihenfolge ist also entscheidend.<br />
Den ersten Versuch könnte man als ”Standard-Matching“ bezeichnen. Ein bereits aus SOS synchronisierter Eintrag soll damit wiedergefunden werden. Wurde der Eintrag in SOS entfernt und wieder mit der gleichen Matrikelnummer angelegt oder hat der Treiber aus anderen Gründen seine Assoziation (DirXML-Association) verloren, soll diese wiederhergestellt werden. Um dies zu gewährleisten wird ein Matching auf Basis des Primärschlüssels der Anbindung, in diesem Fall also die Matrikelnummer, durchgeführt. Hier wird die Matrikelnummer der Reihe nach in folgenden Attributen gesucht:<br />
1. Attribut fauStudPK</p>
<p>2. Attribut fauStudPKOld</p>
<h4>HIS SOS</h4>
<p>Die Suche im Attribut fauStudPK stellt sicher, dass keine zwei Einträge mit der gleichen Matrikelnummer im MD existieren bzw. erzeugt werden. Die Suche im Attribut fauStudPKOld soll bereits exmatrikulierte Studierendeneinträge finden. Werden Einträge im View idm student gelöscht oder exmatrikuliert, wird die Matrikelnummer aus dem Attribut fauStudPK in das Attribut fauStudPKOld verschoben. Dieser Fall findet also z.B. Wiedereinschreiber.<br />
Das zweite Matching versucht den neuen Studierendeneintrag anhand der Attribute Vorname, Nachname, Geburtsdatum und Geburtsort beliebigen Personeneinträgen im MD (normalerweise aus anderen Quellsystemen) zuzuordnen. Hierbei kommt das eigens erstellte Framework Data Linkage (DaLi) zum Einsatz. Eine komplette Beschreibung von DaLi würde den Rahmen dieses  Artikels sprengen, weshalb hier nur die für die Einbettung in die Treiber-Logik notwendigen Teile erlaütert werden. Die grundlegende Funktionsweise einer frühen Version des Frameworks können den Folien des Vortrags von Krasimir Zhelev beim ZKI-Arbeitskreis für Verzeichnisdienste vom 06.Oktober 2009 3 entnommen werden.<br />
Zum Zeitpunkt der Anbindung sollte das Matching-Modul möglichst ohne Abhängigkeit zu einem externen Dienst in die Treiber-Landschaft von Novell eingebettet werden. Zu diesem Zweck wurde aus DaLi ein einfaches Jar-Archiv entwickelt, welches nach Eingabe einer Person und möglicher Matching-Kandidaten die besten Treffer mit den Wahrscheinlichkeitswerten ausgibt. Die Einbindung des sog. ”Matching Processor“ erfolgt über eine Namespace- Definition der Matching Policy. Wie in Abbildung 3.2 ersichltlich wird die Java-Klasse de.rrze.idmone.utils.matching.MatchingProcessor an den Namespace matchingProcessor gebunden.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/namespace_matching.png" rel="lightbox[6784]"><img class="alignnone size-medium wp-image-6802" src="http://blogs.fau.de/pp/files/2012/02/namespace_matching-300x155.png" alt="" width="300" height="155" /></a></p>
<p><strong>Abbildung 3.2</strong>: Matching Policy Namespace Definition</p>
<p>Die eigentliche Verwendung zeigt Abbildung 3.3. In der ersten Zeile wird der Matching Processor instanziert. Dabei werden die Attribute des neuen Personeneintrags übergeben. In der einfachen vereinfachten Version müssen alle möglichen Kandidaten im MD gesucht werden und mittels der Methode addNodeSet übergeben werden. Dabei kann die Methode mehrfach aufgerufen werden um weitere Suchergebnisse hinzuzufügen. Der Methodenaufruf nodeSetMatching startet die Auswertung. In der aktuellen Version vergleicht DaLi über 10000 Kandidaten innerhalb einer Zehntelsekunde. Die Beschränkung liegt hier eindeutig bei den LDAP-Suchen im MD. Nach der Auswertung können die Trefferwahrscheinlichkeiten abgefragt werden. Die Entscheidung ob der neue Eintrag mit einem existierenden Eintrag zusammengeführt wird bleibt so im Treiber bestehen.<br />
Wird kein vorhandener Personeneintrag gematcht folgt die ”Creation Policy“. Hier findet die Überprüfung der zwingend erforderlichen Attribute statt. Fehlt eines dieser Attribute wird die Anlage verweigert. Sind alle erforderlichen Attribute vorhanden wird in der “Placement Policy” der DN des neuen Personeneintrags festgelegt. Dieser wird aus dem Personencontainer, einem eindeutigen Treiber-Prefix und der Matrikelnummer gebildet. Im Anschluss werden einige Attribute für einen neuen Personeneintrag gesetzt. Darunter fallen z.B. die initiale Gruppenmitgliedschaft und ein Anfangspasswort.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/matching_processor1.png" rel="lightbox[6784]"><img class="alignnone size-medium wp-image-6803" src="http://blogs.fau.de/pp/files/2012/02/matching_processor1-300x93.png" alt="" width="300" height="93" /></a></p>
<p><strong>Abbildung 3.3</strong>: Verwendung des Matching Processor</p>
<p>In der ”Command Policy“ werden weitere Aktionen sowohl bei der Neuanlage als auch bei Aktualisierungen durchgeführt. So werden z.B. Löschungen in SOS in die bereits erwähnte Verschiebung der Matrikelnummer in das Attribut fauStudPKOld umgewandelt. Weiterhin findet eine Verlinkung mit dem evtl. bereits synchronisierten Informationen zum Studium statt, oder die Entscheidung ob eine vorhandene Kontaktadresse überschrieben werden soll.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" rel="lightbox[6784]"><img class="alignnone  wp-image-6806" src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" alt="" width="476" height="566" /></a></p>
<h2>Identity Management at the FAU &#8211; Student Management (Part 2)</h2>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Source Systems</h3>
<p>If within the Identity Management (IdM) area the topic source system appears you might immediately think about personnel management. The provision of information about persons is surely the most important variety and most affective to the outside.   Source systems however can be of very different kind. Among others the delivery of data for the organizational structure, mail addresses or functions belong to the category source systems. They all have in common that they provide information which is usually used of several systems.</p>
<p>&nbsp;</p>
<h3>HIS SOS</h3>
<p>One of the first connected systems of the IdMS at the FAU was the student management, represented by HIS SOS. The provision of data basically consists of two database views:</p>
<pre> • idm student
 • idm stg</pre>
<p>idm student consists every needed information about the person of the student. Analogously idm stg  contains every needed information about the studies. Both views are connected with the matriculation number which is at the same point the primary key for the IdM connection.</p>
<h2></h2>
<p>To readout both of the views Novells Identity Manager is used. To keep the effort for the user of the student management at a minimum, no trigger tables are used. The benefit of a trigger table would be the direct provision of all the changes. The driver can only notice changes through reading this table. If yes, it can, depending on the kind of trigger table, directly readout all the information about the existing changes, or can only get the affected data sets of the views. Without trigger tables the driver has to find the changes by itself via a comparison with its intern data copy. If there are no changes there would be no entry in the trigger table and the work of the driver would be done; without trigger tables all the entries have to be proven every time. At the moment the driver needs not more than 5 minutes (incl. SELECT) for both views with 60000 entries each. With a Polling Interval of currently 5 minutes the driver is at its limit with the current configurations.<br />
The synchronization of both views in direction IdMS will be discussed in details in the following chapters. Therefore basic knowledge of the driver concept of Novell&#8217;s Identity Management is required. Illustration 3.1. gives a schematic overview.</p>
<h2><a href="http://blogs.fau.de/pp/files/2012/02/driver_sos.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/driver_sos-163x300.png" alt="" width="163" height="300" /></a></h2>
<p><strong>Illlustration 3.1</strong>: Driver Sos</p>
<h4>View idm student</h4>
<p>&nbsp;</p>
<p>Table 3.3 shows the schema mapping and filter adjustments between the view idm student and the object class user (aka inetOrg Person) in the Meta-Directory (MD). In the ”Input Transformation Policy“ the attribute gender (geschl) is implemented according to the in table 3.1. shown illustration. As in table 3.3 shown the attribute schacGender of the SCHema for ACademia 2 (SCHAC) is used which inserts the ISO 5218 standard. Therefore the data are interpreted as shown in table 3.2.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.31.59.png" alt="" width="407" height="108" /></a></p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.34.30.png" alt="" width="395" height="123" /></a></p>
<p>The ”Matching Policy“ basically consists of two parts. Generally it is tried to find an already existing person entry in the MD and to connect it with the new SOS entry. If the matching is successfully, the following tries are omitted; so the order is important.<br />
The first try could be called &#8220;Standard-Matching&#8221;. An already from SOS synchronized entry should be recovered with it. If the entry has been deleted in SOS and was again created with the same matriculation number or the driver lost its associations because of other reasons (DirXML-Association), it should be recovered. To guarantee this a matching base on the primary key of the connection, in this case the matriculation number, is made. Here it is searched for the matriculation number in the following attributes:<br />
1. Attribut fauStudPK</p>
<p>2. Attribut fauStudPKOld</p>
<h4>HIS SOS</h4>
<p>The search in the attribute fauStudPK makes sure that there aren&#8217;t two entries with the same matriculation number existing or created in the MD. The search in the attribute fauStudPKOld is supposed to find already ex-matriculated student entries. If entries in the View idm student are deleted or ex-matriculated, the matriculation number is moved from the attribute fauStudPK to the attribute fauStudPKOld. So this case finds e.g. again matriculated students.<br />
The second matching tries to assign the new student entry according to the attribute given name, last name, date of birth and place of birth, to any personal entry in the MD (usually from different source systems). Therefore the self created Framework Data Linkage (DaLi) is used. A complete description of DaLi would go beyond the scope of this article and that is the reason why only the embedding of the driver logic are explained. The fundamental operation mode of an earlier version of the framework can be found in the slides of a presentation by Krasimir Zhelev of the ZKI-Workinggroup for account services on 6th October 2009 3.<br />
At the moment of the connection, the matching module should be embedded into the driver-landscape of Novell preferably without any dependency to an external service. For this reason DaLi was developed from a simple Jar-Archive which displays the best matches with the highest rates on possibility after the insertion of a person and possible matching candidates. The embedding of so called &#8220;Matching Processor&#8221; results from a namespace definition of the matching policy. As shown in illustration 3.2 the Java-class de.rrze.idmone.utils.matching. MatchingProcessor is bound to the namespace matchingProcessor.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/namespace_matching.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/namespace_matching-300x155.png" alt="" width="300" height="155" /></a></p>
<p><strong>Illustration 3.2</strong>: Matching Policy Namespace Definition</p>
<p>The actual use is shown in illustration 3.3. In the first line the matching processor is instanced. Therefore the attributes of the new personal entry are committed. In the easiest simplified version ever candidate has to be find in the MD and be delivered with the addNodeSet method. Therefore the method can be multiply selected to add further search results. The method request nodeSetMatching starts the analysis. In the current version DaLi compares over 10000 candidates within the tenth of a second. The limitation here lies definitely in the LDAP-search in the MD. After the analysis the possibility of a hit can be requested. The decision if a new entry should be combined with an already existing entry will stay within the driver.<br />
If there is no existing personal entry matched, the &#8220;Creation Policy&#8221; follows. Here the testing of the obligatory attributes happen. If one of the attributes is missing the construction is denied. If every necessary attribute is available, a new person entry is defined  in the &#8220;Placement Policy&#8221; of the DN in the new person entry. This is build from the person container, a definite driver prefix and the matriculation number. Subsequently some attributes are set for a new person entry. Within these are e.g. the initial group membership and an initial password.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/matching_processor1.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/matching_processor1-300x93.png" alt="" width="300" height="93" /></a></p>
<p><strong>Illustration 3.3</strong>: Use of the Matching Processor</p>
<p>In the ”Command Policy“ further actions are performed as well with a new entry as with updates. So e.g. deletion in SOS are converted in the already mentioned movement of the matriculation number into the fauStudPKOld attribute. Furthermore a linkage between the possibly  already synchronized information according to the studies takes place, or the decision if an already existing contact address should be overwritten.</p>
<p><a href="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" rel="lightbox[6784]"><img src="http://blogs.fau.de/pp/files/2012/02/Bildschirmfoto-2012-02-02-um-16.35.27.png" alt="" width="476" height="566" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2012/02/02/identity-management-an-der-fau-studierendenverwaltung-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identity Management an der FAU &#8211; Übersicht (Teil 1)</title>
		<link>http://blogs.fau.de/pp/2011/12/13/identity-management-an-der-fau-ubersicht-teil-1/</link>
		<comments>http://blogs.fau.de/pp/2011/12/13/identity-management-an-der-fau-ubersicht-teil-1/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 00:23:54 +0000</pubDate>
		<dc:creator>Frank Tröger</dc:creator>
				<category><![CDATA[IdM]]></category>
		<category><![CDATA[IdMFAU]]></category>
		<category><![CDATA[Übersicht]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6681</guid>
		<description><![CDATA[<a href="#English">English Version</a><p>Dieser und die darauf folgenden Beiträge sollen einen Einblick in die Konzepte und Techniken des Identity Mangement Systems der FAU geben. Um die Serie etwas interessanter zu gestalten, werden die einzelnen Beiträge nicht streng logisch erscheinen. Die ersten zehn Beiträge behandeln also nicht das Konzept des Kerns. Vielmehr wird direkt im Anschluss an dieser zugegebenermaßen recht kurzen Übersicht die erste Anbindung eines Quellsystems beschrieben. Danach folgt ein Beitrag über die Anbindung eines Zielsystems, gefolgt von den grundlegenden Konzepten des Kerns, ein weiteres Quellsystem, ...</p><p></p><p>Trotz dieser Sprünge wird versucht ohne große Wiederholungen und Vorwärtsverweise auszukommen. Mit etwas "Hintergrundwissen" sollten alle Beiträge eigenständig lesbar sein. Rückmeldungen sind natürlich willkommen!</p><p></p><p>Und jetzt viel Spaß beim Lesen.</p><p><h3>Übersicht</h3></p><p></p><p></p><p>Eine der Hauptgründe für die Einführung eines Identity Management Systems (IdMS) ist die zentrale Provisionierung und Deprovisionierung von Konten unterschiedlicher Dienste für Personen einer Organisation. Tritt eine neue Person in die Organisation ein, sollen möglichst sofort alle benötigten Ressourcen, welche zur Erledigung der zugedachten Aufgaben nötig sind, bereitstehen. Ändert sich das Aufgabengebiet einer Person, soll die Bereitstellung der Ressourcen angepasst werden. Verlässt eine Person schließlich die Organisation, sollen alle zugeteilten Ressourcen möglichst sofort entzogen werden.</p><p></p><p>Neben diesen grundlegenden Änderungen, besteht jedoch auch der Wunsch nach einer dauerhaften Aktualisierung von provisionierten Attributen. Das wohl bekannteste Beispiel eines solchen Attributs ist das Passwort. Aber auch Änderungen persönlicher Daten, wie z.B. Titel oder Kontaktadresse, sollen zeitnah in alle angeschlossenen Systeme, welche das entsprechende Attribut verwenden, aktualisiert werden.</p><p></p><p>Um diese Aufgaben erfüllen zu können, sind jedoch einige Vorarbeiten nötig. Die</p><p>genannten Vorgänge</p><p></p><p>	neue Person tritt in die Organisation ein</p><p>	Aufgabengebiet einer Person ändert sich</p><p>	Attribute einer Person ändern sich</p><p>	Person verlässt die Organisation</p><p></p><p>müssen erkannt und entsprechend verarbeitet werden. Besitzt die Organisation nur ein System zur Verwaltung von Angehörigen, kann diese Erkennung durch eine lesende Anbindung erledigt werden.</p><p></p><p></p><p></p><p>Kommen zwei oder mehrere Systeme zum Einsatz, kommt eine weitere Aufgabe für das IdMS dazu: die Zusammenführung von Einträgen aus verschiedenen Systemen, welche zur gleichen realen Person gehören. Im vorhandenen Fall einer Universität, können als ein Beispiel die Verwaltungssysteme von Mitarbeitern und Studierenden herangezogen werden. Studierende können während ihres Studiums als wissenschaftliche Hilfskräfte tätig sein oder nach dem Abschluss, teilweise mit einer zeitlichen Lücke, als Mitarbeiter anfangen.</p><p></p><p>Dennoch beginnt alles mit dem Auslesen dieser Systeme, den sogenannten Quellsystemen. Die Konsolidierung der ausgelesenen Daten und darauf aufbauend die Berechnung von zuzuweisenden Dienstleistungen ist der nächste Schritt. Die so ermittelten Dienstleistungen müssen schließlich noch als Konten in die entsprechenden Systeme, den sogenannten Zielsystemen, provisioniert werden. Die Abbildung stellt die einzelnen Schritten schematisch dar.</p><p><a></a></p><p></p><p>&nbsp;</p><p><h2>Identity Management at the FAU - Overview (Part 1)</h2></p><p>This and the following post should give an insight to the concept and techniques of the identity management system of the FAU .</p><p></p><p>To make this series more interesting, the indivudual posts will not appear strictly logical. The first ten posts will therefore not cover the core of the concept. Rather there will be following directly to this, admittedly quite short overview the first connection of a source system displayed. Afterwards a post about the connection of a target system will continue the series, followed by essential concept of the core, another source system, ...</p><p></p><p>Despite of these jumps there should be no repetitions or any forward references. With a little "background knowledge" it should be possible to read the posts individually. Feedback is of course welcomed!</p><p></p><p>And now: have fun reading.</p><p><h3>Overview</h3></p><p><a href="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus.png"><img src="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus-300x172.png" width="300" height="172" /></a>IdM Life Cycle</p><p>One of the main reasons for the introduction of an identity management system (IdMS) is the central provisioning and deprovisioning of accounts of different services for persons of an organisation. If a person joins the organisation, then there should be preferably every resources, which are needed for the intended task, directly available. If the field of action changes for a person, the provision of resources has to be adjusted. If a Person leaves the organisation, every assigned resource has to be taken back immediately.</p><p></p><p>Beside these fundamental changes, there is also the wish for a lasting update of provisioned attributes. The best known example of such an attribute is the password. But also changes of personal data, such as title or contact address, should be updated immediately in every connected system.</p><p></p><p>To complete these tasks however some preliminary work is needed. The said actions</p><p></p><p>	new person enters the organisation</p><p>	field of action of a person changes</p><p>	attribute of a person changes</p><p>	person leaves organisation</p><p></p><p>need to be identified and be used accordingly. If the organisation only has a system for the administration of members, this cognition can be completed with a reading connection.</p><p><a href="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest.png"><img src="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest-300x225.png" width="300" height="225" /></a>IdM Overview</p><p>If there are two or more systems used, there will be another task for IdMS: the connection of entries from different systems which belong zu the same real person. In the existing case of a university, the adminstration systems of employees and students can be used as an example. Students can be working as student assistants during their studies or after that, sometimes with a short time gap, start to work as an employee.</p><p></p><p>However, everything starts with the reading of these systems, the so called source system. The consolidation of the read data and on this data build calculations of referable services is the next step. Eventually the so determined services have to be provisioned into an according system. The illustration shows schematically the individual steps.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="#English">English Version</a><br />
Dieser und die darauf folgenden Beiträge sollen einen Einblick in die Konzepte und Techniken des Identity Mangement Systems der <acronym title="Friedrich-Alexander-Universität Erlangen-Nürnberg">FAU</acronym> geben. Um die Serie etwas interessanter zu gestalten, werden die einzelnen Beiträge nicht streng logisch erscheinen. Die ersten zehn Beiträge behandeln also nicht das Konzept des Kerns. Vielmehr wird direkt im Anschluss an dieser zugegebenermaßen recht kurzen Übersicht die erste Anbindung eines Quellsystems beschrieben. Danach folgt ein Beitrag über die Anbindung eines Zielsystems, gefolgt von den grundlegenden Konzepten des Kerns, ein weiteres Quellsystem, &#8230;</p>
<p>Trotz dieser Sprünge wird versucht ohne große Wiederholungen und Vorwärtsverweise auszukommen. Mit etwas &#8220;Hintergrundwissen&#8221; sollten alle Beiträge eigenständig lesbar sein. Rückmeldungen sind natürlich willkommen!</p>
<p>Und jetzt viel Spaß beim Lesen.</p>
<h3>Übersicht</h3>
<div id="attachment_6686" class="wp-caption alignright" style="width: 310px"><a href="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus.png"><img class="size-medium wp-image-6686 " src="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus-300x172.png" alt="Lebenszyklus" width="300" height="172" /></a><p class="wp-caption-text">IdM Lebenszyklus</p></div>
<p>Eine der Hauptgründe für die Einführung eines Identity Management Systems (IdMS) ist die zentrale Provisionierung und Deprovisionierung von Konten unterschiedlicher Dienste für Personen einer Organisation. Tritt eine neue Person in die Organisation ein, sollen möglichst sofort alle benötigten Ressourcen, welche zur Erledigung der zugedachten Aufgaben nötig sind, bereitstehen. Ändert sich das Aufgabengebiet einer Person, soll die Bereitstellung der Ressourcen angepasst werden. Verlässt eine Person schließlich die Organisation, sollen alle zugeteilten Ressourcen möglichst sofort entzogen werden.</p>
<p>Neben diesen grundlegenden Änderungen, besteht jedoch auch der Wunsch nach einer dauerhaften Aktualisierung von provisionierten Attributen. Das wohl bekannteste Beispiel eines solchen Attributs ist das Passwort. Aber auch Änderungen persönlicher Daten, wie z.B. Titel oder Kontaktadresse, sollen zeitnah in alle angeschlossenen Systeme, welche das entsprechende Attribut verwenden, aktualisiert werden.</p>
<p>Um diese Aufgaben erfüllen zu können, sind jedoch einige Vorarbeiten nötig. Die<br />
genannten Vorgänge</p>
<ul>
<li>neue Person tritt in die Organisation ein</li>
<li>Aufgabengebiet einer Person ändert sich</li>
<li>Attribute einer Person ändern sich</li>
<li>Person verlässt die Organisation</li>
</ul>
<p>müssen erkannt und entsprechend verarbeitet werden. Besitzt die Organisation nur ein System zur Verwaltung von Angehörigen, kann diese Erkennung durch eine lesende Anbindung erledigt werden.</p>
<div id="attachment_6692" class="wp-caption alignleft" style="width: 310px"><a href="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest.png"><img class="size-medium wp-image-6692 " src="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest-300x225.png" alt="IdM Übersicht" width="300" height="225" /></a><p class="wp-caption-text">IdM Übersicht</p></div>
<p>Kommen zwei oder mehrere Systeme zum Einsatz, kommt eine weitere Aufgabe für das IdMS dazu: die Zusammenführung von Einträgen aus verschiedenen Systemen, welche zur gleichen realen Person gehören. Im vorhandenen Fall einer Universität, können als ein Beispiel die Verwaltungssysteme von Mitarbeitern und Studierenden herangezogen werden. Studierende können während ihres Studiums als wissenschaftliche Hilfskräfte tätig sein oder nach dem Abschluss, teilweise mit einer zeitlichen Lücke, als Mitarbeiter anfangen.</p>
<p>Dennoch beginnt alles mit dem Auslesen dieser Systeme, den sogenannten Quellsystemen. Die Konsolidierung der ausgelesenen Daten und darauf aufbauend die Berechnung von zuzuweisenden Dienstleistungen ist der nächste Schritt. Die so ermittelten Dienstleistungen müssen schließlich noch als Konten in die entsprechenden Systeme, den sogenannten Zielsystemen, provisioniert werden. Die Abbildung stellt die einzelnen Schritten schematisch dar.<br />
<a name="English"></a></p>
<p>&nbsp;</p>
<h2>Identity Management at the FAU &#8211; Overview (Part 1)</h2>
<p>This and the following post should give an insight to the concept and techniques of the identity management system of the <acronym title="Friedrich-Alexander-Universität Erlangen-Nürnberg">FAU </acronym>.</p>
<p>To make this series more interesting, the indivudual posts will not appear strictly logical. The first ten posts will therefore not cover the core of the concept. Rather there will be following directly to this, admittedly quite short overview the first connection of a source system displayed. Afterwards a post about the connection of a target system will continue the series, followed by essential concept of the core, another source system, &#8230;</p>
<p>Despite of these jumps there should be no repetitions or any forward references. With a little &#8220;background knowledge&#8221; it should be possible to read the posts individually. Feedback is of course welcomed!</p>
<p>And now: have fun reading.</p>
<h3>Overview</h3>
<div>
<dl>
<dt><a href="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus.png"><img src="http://blogs.fau.de/pp/files/2011/12/idm_lebenszyklus-300x172.png" alt="Lebenszyklus" width="300" height="172" /></a></dt>
<dd>IdM Life Cycle</dd>
</dl>
</div>
<p>One of the main reasons for the introduction of an identity management system (IdMS) is the central provisioning and deprovisioning of accounts of different services for persons of an organisation. If a person joins the organisation, then there should be preferably every resources, which are needed for the intended task, directly available. If the field of action changes for a person, the provision of resources has to be adjusted. If a Person leaves the organisation, every assigned resource has to be taken back immediately.</p>
<p>Beside these fundamental changes, there is also the wish for a lasting update of provisioned attributes. The best known example of such an attribute is the password. But also changes of personal data, such as title or contact address, should be updated immediately in every connected system.</p>
<p>To complete these tasks however some preliminary work is needed. The said actions</p>
<ul>
<li>new person enters the organisation</li>
<li>field of action of a person changes</li>
<li>attribute of a person changes</li>
<li>person leaves organisation</li>
</ul>
<p>need to be identified and be used accordingly. If the organisation only has a system for the administration of members, this cognition can be completed with a reading connection.</p>
<div>
<dl>
<dt><a href="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest.png"><img src="http://blogs.fau.de/pp/files/2011/12/idm_src_core_dest-300x225.png" alt="IdM Übersicht" width="300" height="225" /></a></dt>
<dd>IdM Overview</dd>
</dl>
</div>
<p>If there are two or more systems used, there will be another task for IdMS: the connection of entries from different systems which belong zu the same real person. In the existing case of a university, the adminstration systems of employees and students can be used as an example. Students can be working as student assistants during their studies or after that, sometimes with a short time gap, start to work as an employee.</p>
<p>However, everything starts with the reading of these systems, the so called source system. The consolidation of the read data and on this data build calculations of referable services is the next step. Eventually the so determined services have to be provisioned into an according system. The illustration shows schematically the individual steps.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2011/12/13/identity-management-an-der-fau-ubersicht-teil-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postgres, Serials und Rules: Achtung!</title>
		<link>http://blogs.fau.de/pp/2011/12/12/postgres-serials-und-rules-achtung/</link>
		<comments>http://blogs.fau.de/pp/2011/12/12/postgres-serials-und-rules-achtung/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 15:50:52 +0000</pubDate>
		<dc:creator>Peter Reiß</dc:creator>
				<category><![CDATA[PPSA]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6677</guid>
		<description><![CDATA[Achtung bei folgender Konstellation:<p>[sql]</p><p>CREATE TABLE source</p><p>(</p><p>id serial NOT NULL,</p><p>"text" character varying(255),</p><p>CONSTRAINT id_pkeyPRIMARY KEY (id)</p><p>)</p><p>[/sql]</p><p></p><p>mit Regel:</p><p>[sql]</p><p>CREATE RULE "insert_rule" AS</p><p>ON INSERT TO source DO  INSERT INTO dest (sourceid)</p><p>VALUES (NEW.id);</p><p>[/sql]</p><p></p><p>Serial und Bigserial sind in Postgres intern so konzipiert, dass der Wert für das Feld durch einen Aufruf von</p><p>[sql]</p><p>nextval('source_id_seq')</p><p>[/sql]</p><p>erzeugt wird. Entgegen der Erwartung wird nach Ausführen der Regel aber nicht source.id in die Tabelle dest eingetragen, sondern source.id +1. Bug oder einfach so gewolltes Verhalten von Postgres? In der Postgres-Dokumentation zu Regeln findet sich zumindest ein entsprechender Kommentar:</p><p>"Beware that CREATE RULE insert_foo AS ON INSERT TO foos DO ALSO INSERT INTO bar (foo_id) VALUES (NEW.id); won't work if foo.id is a serial (and foo_id REFERENCES foos ofcourse) because nextval() is evaluated twice."</p><p></p><p>Sauberste Lösung: Hier keine Regel, sondern einen Trigger verwenden.</p><p><h2>Postgres, Serials and Rules: Caution!</h2></p><p>Caution with the following constellations:</p><p>[sql]</p><p>CREATE TABLE source</p><p>(</p><p>id serial NOT NULL,</p><p>"text" character varying(255),</p><p>CONSTRAINT id_pkeyPRIMARY KEY (id)</p><p>)</p><p>[/sql]</p><p></p><p>with rule:</p><p>[sql]</p><p>CREATE RULE "insert_rule" AS</p><p>ON INSERT TO source DO  INSERT INTO dest (sourceid)</p><p>VALUES (NEW.id);</p><p>[/sql]</p><p></p><p>Serial and Bigserial are so in Postgres internally designed that the data for the field can be generated with the request of</p><p>[sql]</p><p>nextval('source_id_seq')</p><p>[/sql]</p><p>Against all expectations after carrying out the rule it is not source.id which is filled into the table dest but source.id +1. Bug or simply unwanted behavior of Postgres? In the Postgres-Documentation the rules can be found at least in on depending commentary:</p><p>"Beware that CREATE RULE insert_foo AS ON INSERT TO foos DO ALSO INSERT INTO bar (foo_id) VALUES (NEW.id); won't work if foo.id is a serial (and foo_id REFERENCES foos ofcourse) because nextval() is evaluated twice."</p><p></p><p>Cleanest solution: Do not use a rule here but a trigger.</p>]]></description>
				<content:encoded><![CDATA[<p>Achtung bei folgender Konstellation:<br />
[sql]<br />
CREATE TABLE source<br />
(<br />
id serial NOT NULL,<br />
&#8220;text&#8221; character varying(255),<br />
CONSTRAINT id_pkeyPRIMARY KEY (id)<br />
)<br />
[/sql]</p>
<p>mit Regel:<br />
[sql]<br />
CREATE RULE &#8220;insert_rule&#8221; AS<br />
ON INSERT TO source DO  INSERT INTO dest (sourceid)<br />
VALUES (NEW.id);<br />
[/sql]</p>
<p>Serial und Bigserial sind in Postgres intern so konzipiert, dass der Wert für das Feld durch einen Aufruf von<br />
[sql]<br />
nextval(&#8216;source_id_seq&#8217;)<br />
[/sql]<br />
erzeugt wird. Entgegen der Erwartung wird nach Ausführen der Regel aber nicht source.id in die Tabelle dest eingetragen, sondern <code>source.id +1</code>. Bug oder einfach so gewolltes Verhalten von Postgres? In der Postgres-Dokumentation zu Regeln findet sich zumindest ein entsprechender Kommentar:<br />
&#8220;Beware that <code>CREATE RULE insert_foo AS ON INSERT TO foos DO ALSO INSERT INTO bar (foo_id) VALUES (NEW.id);</code> won&#8217;t work if <code>foo.id</code> is a serial (and foo_id REFERENCES foos ofcourse) because <code>nextval()</code> is evaluated twice.&#8221;</p>
<p>Sauberste Lösung: Hier keine Regel, sondern einen Trigger verwenden.</p>
<h2>Postgres, Serials and Rules: Caution!</h2>
<p>Caution with the following constellations:<br />
[sql]<br />
CREATE TABLE source<br />
(<br />
id serial NOT NULL,<br />
&#8220;text&#8221; character varying(255),<br />
CONSTRAINT id_pkeyPRIMARY KEY (id)<br />
)<br />
[/sql]</p>
<p>with rule:<br />
[sql]<br />
CREATE RULE &#8220;insert_rule&#8221; AS<br />
ON INSERT TO source DO  INSERT INTO dest (sourceid)<br />
VALUES (NEW.id);<br />
[/sql]</p>
<p>Serial and Bigserial are so in Postgres internally designed that the data for the field can be generated with the request of<br />
[sql]<br />
nextval(&#8216;source_id_seq&#8217;)<br />
[/sql]<br />
Against all expectations after carrying out the rule it is not source.id which is filled into the table dest but <code>source.id +1</code>. Bug or simply unwanted behavior of Postgres? In the Postgres-Documentation the rules can be found at least in on depending commentary:<br />
&#8220;Beware that <code>CREATE RULE insert_foo AS ON INSERT TO foos DO ALSO INSERT INTO bar (foo_id) VALUES (NEW.id);</code> won&#8217;t work if <code>foo.id</code> is a serial (and foo_id REFERENCES foos ofcourse) because <code>nextval()</code> is evaluated twice.&#8221;</p>
<p>Cleanest solution: Do not use a rule here but a trigger.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2011/12/12/postgres-serials-und-rules-achtung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wir sind umgezogen! &#8211; We moved!</title>
		<link>http://blogs.fau.de/pp/2011/11/29/wir-sind-umgezogen/</link>
		<comments>http://blogs.fau.de/pp/2011/11/29/wir-sind-umgezogen/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 16:59:50 +0000</pubDate>
		<dc:creator>Hendrik Eggers</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://blogs.fau.de/pp/?p=6670</guid>
		<description><![CDATA[<a href="#English">English Version </a><p></p><p>Wochenlang Funkstille und dann solche News?</p><p>Nein, wir haben uns nicht vom <a href="http://www.rrze.de/">RRZE</a> abgespalten, noch wurden wir rausgeworfen. ;-)</p><p></p><p>Vielmehr sind auch wir von der <a href="http://blogs.fau.de/rrze/2011/11/15/rrze-mitarbeiter-weitgehend-umgezogen/">Fassadenrenovierung</a> betroffen. Um dem akuten Raummangel abzuhelfen, hat die FAU daher einige Container gekauft und im Süd-Gelände unweit des RRZE aufgestellt.</p><p></p><p>Zur Orientierung finden Sie eine Google Map unter <a href="http://g.co/maps/tdsu4">http://g.co/maps/tdsu4</a></p><p></p><p>Wer uns mit Hilfe eines Navigationssystems finden will, steuere die "Haberstr. 5, 91058 Erlangen" an.</p><p>Unsere offizielle Adresse lautet aber weiterhin auf "Martensstr. 1, 91058 Erlangen".</p><p></p><p>Und bezüglich der Funkstille gelobe ich spätestens als Neujahrs-Vorsatz auch Besserung. 8-)</p><p><a></a></p><p><h2>We moved!</h2></p><p>Weeks have gone without any sign of life and now news like this?</p><p>No, we did not split from the  <a href="http://www.rrze.de/">RRZE</a> and no, we haven't been kicked out. ;-)</p><p></p><p>In fact we are also affected from the  <a href="http://blogs.fau.de/rrze/2011/11/15/rrze-mitarbeiter-weitgehend-umgezogen/">facade renovation</a>. To do something against the acute lack of space, the FAU bought a few containers which have been placed in the southern space, not far from the RRZE.</p><p></p><p>For orientation you can find a Google Map under  <a href="http://g.co/maps/tdsu4">http://g.co/maps/tdsu4</a></p><p></p><p>If there is somebody who wants to find us with the help of a navigation system should head for "Haberstr. 5, 91058 Erlangen".</p><p>Our official address remains "Martensstr. 1, 91058 Erlangen".</p><p></p><p>And because of the silence: I promise improvement at least as a new year's resolution . 8-)</p>]]></description>
				<content:encoded><![CDATA[<p><a href="#English">English Version </a></p>
<p>Wochenlang Funkstille und dann solche News?<br />
Nein, wir haben uns nicht vom <a href="http://www.rrze.de/" target="_blank">RRZE</a> abgespalten, noch wurden wir rausgeworfen. <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Vielmehr sind auch wir von der <a href="http://blogs.fau.de/rrze/2011/11/15/rrze-mitarbeiter-weitgehend-umgezogen/" target="_blank">Fassadenrenovierung</a> betroffen. Um dem akuten Raummangel abzuhelfen, hat die FAU daher einige Container gekauft und im Süd-Gelände unweit des RRZE aufgestellt.</p>
<p>Zur Orientierung finden Sie eine Google Map unter <a href="http://g.co/maps/tdsu4" target="_blank">http://g.co/maps/tdsu4</a></p>
<p>Wer uns mit Hilfe eines Navigationssystems finden will, steuere die &#8220;Haberstr. 5, 91058 Erlangen&#8221; an.<br />
Unsere offizielle Adresse lautet aber weiterhin auf &#8220;Martensstr. 1, 91058 Erlangen&#8221;.</p>
<p>Und bezüglich der Funkstille gelobe ich spätestens als Neujahrs-Vorsatz auch Besserung. <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /><br />
<a name="English"></a></p>
<h2>We moved!</h2>
<p>Weeks have gone without any sign of life and now news like this?<br />
No, we did not split from the  <a href="http://www.rrze.de/" target="_blank">RRZE</a> and no, we haven&#8217;t been kicked out. <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>In fact we are also affected from the  <a href="http://blogs.fau.de/rrze/2011/11/15/rrze-mitarbeiter-weitgehend-umgezogen/" target="_blank">facade renovation</a>. To do something against the acute lack of space, the FAU bought a few containers which have been placed in the southern space, not far from the RRZE.</p>
<p>For orientation you can find a Google Map under  <a href="http://g.co/maps/tdsu4" target="_blank">http://g.co/maps/tdsu4</a></p>
<p>If there is somebody who wants to find us with the help of a navigation system should head for &#8220;Haberstr. 5, 91058 Erlangen&#8221;.<br />
Our official address remains &#8220;Martensstr. 1, 91058 Erlangen&#8221;.</p>
<p>And because of the silence: I promise improvement at least as a new year&#8217;s resolution . <img src='http://blogs.fau.de/pp/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.fau.de/pp/2011/11/29/wir-sind-umgezogen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
