From 7be86bcbea16ddfa686ec7e4313d66c7d6f1d9c9 Mon Sep 17 00:00:00 2001
From: Martin Haase <martin.haase@daasi.de>
Date: Mon, 14 Jul 2008 13:06:46 +0000
Subject: [PATCH] Last Sync-Up, no change in functionality concerning RBAC

git-svn-id: https://textgridlab.org/svn/textgrid/trunk/middleware/tgauth@1499 7c539038-3410-0410-b1ec-0f2a7bf1c452
---
 .../documentation/install.pdf                 | Bin 0 -> 150436 bytes
 .../documentation/install.tex                 | 768 +++++++++++++++++-
 .../documentation/literature.bib              | 119 +++
 .../lib/Authentication.class.php              | 100 +++
 .../lib/CConnection.container.php             |  21 +
 .../lib/CLDAPConnection.container.php         |  19 +
 .../lib/CSQLConnection.container.php          |  18 +
 .../lib/DataBase.class.php                    |  26 +-
 .../lib/Date.class.php                        | 384 +++++++++
 .../lib/Helper.class.php                      |  37 +-
 .../lib/LDAP.class.php                        |  21 +-
 .../lib/Node.class.php                        | 100 ++-
 .../lib/XML.class.php                         | 155 +++-
 .../lib/iDate.interface.php                   |  19 +
 .../lib/iXML.interface.php                    |   1 +
 .../rbac/RBAC.class.php                       |   6 +-
 .../rbac/RBACcore.class.php                   |  36 +-
 17 files changed, 1732 insertions(+), 98 deletions(-)
 create mode 100644 info.textgrid.middleware.tgauth.rbac/documentation/install.pdf
 create mode 100644 info.textgrid.middleware.tgauth.rbac/documentation/literature.bib
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/Authentication.class.php
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/CConnection.container.php
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/CLDAPConnection.container.php
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/CSQLConnection.container.php
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/Date.class.php
 create mode 100755 info.textgrid.middleware.tgauth.rbac/lib/iDate.interface.php

diff --git a/info.textgrid.middleware.tgauth.rbac/documentation/install.pdf b/info.textgrid.middleware.tgauth.rbac/documentation/install.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..47943dffb569de13e916476cc40a36a7b4a07396
GIT binary patch
literal 150436
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%0AAw02+ul-U$;<ASrTSo=%ok53f@hwm`3bJp+{t=j
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
V|CP_p!5RM2b@t6SZ{FU_{sVR`sv!UX

literal 0
HcmV?d00001

diff --git a/info.textgrid.middleware.tgauth.rbac/documentation/install.tex b/info.textgrid.middleware.tgauth.rbac/documentation/install.tex
index 0c763bc..ad2f9bc 100644
--- a/info.textgrid.middleware.tgauth.rbac/documentation/install.tex
+++ b/info.textgrid.middleware.tgauth.rbac/documentation/install.tex
@@ -1,14 +1,15 @@
-\documentclass[a4paper,12pt,twoside]{article}
-\usepackage[ngerman]{babel}
+\documentclass[a4paper,11pt,twoside]{article}
+%\usepackage[ngerman]{babel}
 \usepackage[OT1]{fontenc}
 \usepackage[latin1]{inputenc}
 \usepackage[top=2.5cm,bottom=2.5cm,left=3cm,right=2.5cm]{geometry}
 \usepackage{amssymb}
 \usepackage{amsmath}
 \usepackage{graphicx}
-\usepackage{bibgerm}
+%\usepackage{bibgerm}
 \usepackage{setspace}
 \usepackage{ifthen}
+\usepackage{hyperref}
 \graphicspath{{graphics/}}
 %
 %
@@ -16,20 +17,773 @@
 %
 %
 \author{Markus Widmer}
-\title{Role Based Access Control mit OpenLDAP\\ (Anwendung im TextGrid-Projekt)}
-\date{SS 2007}
+\title{openRBAC installation guide}
+\date{04.04.2008}
 %
 %
-\pagenumbering{roman}
+\pagenumbering{arabic}
 \parindent=0mm
 %
 %
 \begin{document}
 %
 \begin{abstract}
-In this document you will find a quick installation and configuration guide for the openRBAC software. This software is implemented in PHP5 and is available under the LGPL (Limited Gnu Public License).
+In this document you will find a quick installation and configuration guide for the openRBAC software. This software is implemented in PHP5 and is available under the LGPL (Lesser Gnu Public License). As backend database it uses one or more LDAP servers. The configuration of these servers is not part of this guide.
 \end{abstract}
 %
 \tableofcontents
 %
+% --------------------------------------------------------------------------
+\section{Introduction}
+\label{sec:intro}
+% --------------------------------------------------------------------------
+This software is an implementation of the RBAC Standard\cite{rbac2004}. This standard defines the minimum of functionality for role based access control systems. If you are interested in details about RBAC or the RBAC Standard, please read the accompanying openRBAC documentation.
+%
+%
+% --------------------------------------------------------------------------
+\section{Installation}
+\label{sec:inst}
+% --------------------------------------------------------------------------
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Requirements}
+\label{subsec:inst:requirements}
+% --------------------------------------------------------------------------
+Because this software is written in PHP5 you need an PHP5 interpreter. It has to be compiled with XSL and XML support. If you plan to use RBAC in combination with SOAP services, you have to add SOAP support as well, but you do \emph{not} need to install PEAR to run openRBAC on your PHP5 installation. Further you need one or more LDAP servers that are ready to accept connections from openRBAC which will read and store its data there. If you don not have an LDAP server yet, consider to use openLDAP. You can download it from the project page\footnote{http://www.openldap.org} and you will also find an installation guide there. If you want to use openRBAC with Active Directory as data storage, you have to add LDAPS support to the underlying LDAP class by yourself, which offers only TLS support at the moment.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Platform}
+\label{subsec:inst:platform}
+% --------------------------------------------------------------------------
+The software was developed and tested on openSuSE Linux 10.1. So if you use a Linux on your machine, you shouldn't have any problems. It has not been tested on other platforms, but if you have a PHP5 interpreter running properly on your system, it should work as well.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Getting the code}
+\label{subsec:inst:gettingthecode}
+% --------------------------------------------------------------------------
+This project is rather young, so at the moment you can only download the code via a SVN client. The software consists of two parts that are required for openRBAC to run:
+\begin{description}
+\item[mwlib] This part is a collection of rather small classes that provide general functionality, as for example parsing and reading XML files, or encapsulate LDAP commands. The openRBAC software only needs the following files:
+\begin{itemize}
+\item iNode.interface.php
+\item iXML.interface.php
+\item iLDAP.interface.php
+\item iHelper.interface.php
+\item Node.class.php
+\item XML.class.php
+\item LDAP.class.php
+\item Helper.class.php
+\end{itemize}
+All other files could be deleted or simply left where they are, because they do no harm as long as you do not include them.
+\item[openRBAC] This part is the RBAC implementation. It is split into multiple files, each containing one class or interface.
+\end{description}
+You have to download both parts. To make it easier to get updates and patches via SVN, it is recommended that you make an SVN checkout rather then an SVN export. But if you do so, make sure you download \emph{mwlib} and \emph{openRBAC} into two separate directories. Otherwise you will get an error from your SVN client. If you use the Linux subversion client, you can go to your target directory and run the following commands (don't forget the single dot at the end of line 4 and 6!):\\
+\begin{verbatim}
+mkdir rbac
+mkdir lib
+cd rbac
+svn checkout svn://markus-widmer.de/openRBAC/trunk/ .
+cd ../lib
+svn checkout svn://markus-widmer.de/mwlib/trunk/ .
+\end{verbatim}
+Now you have installed openRBAC on your system. Continue with section \ref{subsec:inst:configuration} to learn how to configure the software or read more about the different possibilities using the software in section \ref{subsec:inst:makeadecision}.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Make a decision}
+\label{subsec:inst:makeadecision}
+% --------------------------------------------------------------------------
+Before you start to configure openRBAC, you should think about your requirements. You can use all of the software or only parts of it. The differences are described below.
+%
+%
+% --------------------------------------------------------------------------
+\subsubsection{The RBAC Framework}
+\label{subsubsec:inst:configuration:therbacframework}
+% --------------------------------------------------------------------------
+You can decide whether you want to use the RBAC Framework or not. It is wrapped around the RBAC libraries and allows you not only to include the required classes from the \emph{mwlib} via a configuration file, but also to use the SSD and/or DSD extension for openRBAC or to write custom extensions. An extension allows you to modify the behaviour of the software in a way it is needed for your application. RBAC, for example, does not know any public resources. So you would have to work around this by implementing the ''is public'' statement directly into your application. Using an extension for the \emph{checkAccess} function is the other way. You can write your own code that decides when you wish to grant access although RBAC would not.\\
+Using the RBAC Framework gives you a lot more flexibility, but of cores it makes a higher complexity.
+%
+%
+% --------------------------------------------------------------------------
+\subsubsection{Core RBAC}
+\label{subsubsec:inst:configuration:corerbac}
+% --------------------------------------------------------------------------
+This library contains the core features of RBAC as defined in the standard. It allows you to add and delete users, roles and sessions as well as managing their rights. This library can be used within the RBAC Framework or can be included directly into your application. The configuration is almost independent of your decision.
+%
+%
+% --------------------------------------------------------------------------
+\subsubsection{Hierarchical RBAC}
+\label{subsubsec:inst:configuration:hierarchicalrbac}
+% --------------------------------------------------------------------------
+This library contains the functionality of limited hierarchical RBAC as defined in the standard. It is derived from Core RBAC and allows you to manage role hierarchies and redefines some of the functions from Core RBAC. This library can be used within the RBAC Framework or can be included directly into your application. The configuration is almost independent of your decision.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Preparing the LDAP server}
+\label{subsec:inst:preparingtheldapserver}
+% --------------------------------------------------------------------------
+Before you start to configure openRBAC, you should prepare your LDAP server. If you have it running, it is recommended that you create a subtree for each of the different parts of RBAC, for example:
+\begin{description}
+\item[users] Usually the users in a LDAP server are stored under the RDN\footnote{RDN: Relative Distinguished Name} ''ou=people''. If you ask openRBAC to add a user via the \emph{addUser} function, it will create it there. Respectively openRBAC will search for users under that subtree. If you already have your users defined somewhere else, you should use this DN, of course.
+\item[roles] RBAC is based on roles. It grants permissions to roles and therefore uses roles to make access decisions. To make it possible for openRBAC to store and manage roles, you have to create a subtree, for example ''ou=roles'' in your LDAP server. If you have an LDAP server where there are already groups defined, you could also try to re-use them as roles and configure the RBAC library respectively. But unless you are familiar with the differences between roles and groups and how openRBAC creates, deletes and manages roles, you should be careful.
+\item[sessions] The RBAC standard defines sessions as continous context for a user. Therefore openRBAC needs a place to store session information in the LDAP server, for example a subtree named ''ou=sessions''.
+\item[resources] The RBAC standard does not define any functionality to manage resources. Nevertheless you have to create a subtree in your LDAP server where openRBAC can find your resources. To learn more about how to create a resource in your LDAP directory, please read the accompanying documentation of openRBAC.
+\item[SSD/DSD sets] If you decided to use SSD/DSD (Static/Dynamic Separation of Duty) sets in your application, you have to create a subtree for each of them. openRBAC will store and read informations about restrictions there. You could create subtrees ''ou=dsd'' as the case may be ''ou=ssd''.
+\end{description}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Configuration}
+\label{subsec:inst:configuration}
+% --------------------------------------------------------------------------
+%
+%
+% --------------------------------------------------------------------------
+\subsubsection{Configuring the RBAC Framework}
+\label{subsubsec:inst:configuration:configuringtherbacframework}
+% --------------------------------------------------------------------------
+In the ''rbac/conf/'' directory, you will find two configuration files. You are free to rename them if you wish to.
+\begin{description}
+\item[rbac.conf.dist] This is an example configuration for the RBAC library. Here you configure the connections to the LDAP server(s) and details about your attributes used in these servers. This file will further be referred as ''rbac.conf'' (see appendix \ref{subsec:appendix:configurationfiles:rbacconfdist}).
+\item[system.conf.dist] This is an example configuration for the RBAC Framework. Here you configure the path to the rbac.conf, the paths of the files you have to include and the extensions you want to use. This file will further be referred as ''system.conf'' (see appendix \ref{subsec:appendix:configurationfiles:systemconfdist}).
+\end{description}
+Please start by editing rbac.conf. The file is split into sections each containing multiple variables. For each of the sections ''user'', ''role'', ''session'' and ''resource'' you have to define the appropriate LDAP parameters:
+\begin{description}
+\item[host] The hostname where the LDAP server is installed on
+\item[port] The port on which the LDAP server is listening
+\item[version] The version to use to talk to the LDAP server
+\item[tls] If you want to use TLS for the connection say 'yes', otherwise say 'no'
+\item[base] The base-DN where the RBAC library starts searching for an entry
+\item[binddn] The DN with which the RBAC library binds to the LDAP server
+\item[password] The password corresponding to the binddn parameter
+\item[filter] A basic filter that is used in every search
+\item[namingattribute] The naming attribute of an entry (f.e. ''uid' for a user entry)
+\end{description}
+For the role section there is the additional ''assignedattribute'' parameter. In this attribute the RBAC library stores the users assigned to a role.\\
+For the resource section there is the additional ''aliasattribute'' parameter. If you specify an attribute different from the ''namingattribute'', the RBAC library searches for both when searching for a resource.\\
+The ssd  and dsd sections are only needed if you decide to use one of these extensions. Otherwise you can ignore them.\\
+The ''errorCode''  and ''errorDescription'' sections can be left untouched unless you want to change the output messages the RBAC library should give.\\
+Please edit the system.conf next. There you find various configuration parameters you have to adapt to your installation. Please keep in mind that every path has to be either absolut or relative to your application that is using openRBAC.
+\begin{description}
+\item[configuration] This parameter tells the RBAC Framework where to find the configuration file for the RBAC library that you have already modified.
+\item[rbac] The ''class'' attribute defines which RBAC library you wish to use. Possible values are ''RBACcore'' and ''RBAClimitedHirarchical''. As child nodes you see a lot of ''require'' statements. As mentioned in section \ref{subsec:inst:gettingthecode} the code consists of two parts. You now have to tell the RBAC Framework where it can find all needed classes and interfaces. Depending on how you decided where to store the code, you have to adapt the pathes.
+\item[extension] If you want to use extensions, you have to configure them. For each extension class you have to define an ''extension'' statement. The ''class'' attribute contains the name of the class and the ''file'' attribute contains the path and filename in which the class is defined.
+\end{description}
+A simple example on how to integrate the RBAC Framework into your application could be:
+\begin{verbatim}
+<?php
+require_once( "RBAC.class.php" );
+
+$rbac = new RBAC( "../conf/system.conf", "./", "../lib" );
+$rbac->createSession( "martin.haase@daasi.de", Array(), "abc" );
+?>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\subsubsection{Configuring openRBAC without the RBAC Framework}
+\label{subsubsec:inst:configuration:configuringopenrbacwithouttherbacframework}
+% --------------------------------------------------------------------------
+If you want to use the Core RBAC or limited hierarchical RBAC \emph{without} the RBAC Framework, you have to adapt the rbac.conf as described in section \ref{subsubsec:inst:configuration:configuringtherbacframework}, but you can omit the part that describes the adaption of system.conf. Because the RBAC Framework now does not include the required classes and interfaces, you have to define the paths via constants in your application so that the RBAC library can do this on its own:
+\begin{description}
+\item[RBAC\_LIB\_PATH] This constant has to contain the path to the mwlib files either absolute or relative to your application.
+\item[RBAC\_PATH] This constant has to contain the path to the openRBAC files either absolute or relative to your application.
+\end{description}
+You have to define these constants in your application before you include the RBAC library! A simple example on how to integrate the Core RBAC into your application could be:
+\begin{verbatim}
+<?php
+define( "RBAC_LIB_PATH", "../lib" );
+define( "RBAC_PATH", "./" );
+require_once( "RBACcore.class.php" );
+
+$rbac = new RBACcore( "conf/rbac.conf" );
+$rbac->createSession( "jondoe", Array( "student", "hiwi,staff" ), "s13243355a46" );
+?>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Closing words}
+\label{subsec:inst:closingwords}
+% --------------------------------------------------------------------------
+You now have installed openRBAC. Remember that openRBAC is just a library and cannot replace an application. Even if you just want to have a graphical interface that maps the RBAC functionality defined in the standard, you have to write it on your own. It is not an ''out-of-the-box'' management tool.
+%
+%
+% --------------------------------------------------------------------------
+\section{RBAC with XACML via SOAP}
+\label{sec:xacmlsoap}
+% --------------------------------------------------------------------------
+Additional to the RBAC library and RBAC Framework, you will find a SOAP\cite{soap} server and client in the \emph{SOAP} directory. Both use the SAML 2.0 profile of XACML v2.0\cite{xacmlsaml2005} to communicate with each other. The clients gives you the possibility to call the RBAC function \emph{checkAccess} via a SOAP service. SOAP transports a SAML Request and Response adapted to XACML. An example SOAP request is given in App. \ref{sec:appendix:rbacwithxacmlviasoap:soaprequest} and an appropriate SOAP response is given in App. \ref{sec:appendix:rbacwithxacmlviasoap:soapresponse}.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Preparations}
+\label{subsec:xacmlsoap:preparations}
+% --------------------------------------------------------------------------
+To use RBAC with SOAP you have to have a webserver like Apache having PHP5 module included. You than have to configure Apache to serve the content of the \emph{SOAP} directory. Make sure that it is possible for {xacml.php} to include all of the RBAC library and RBAC Framework.
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Configuration}
+\label{subsec:xacmlsoap:configuration}
+% --------------------------------------------------------------------------
+At this point it is possible to reach the file \emph{xacml.php} over the HTTP protocol using a browser or something similar. Now you have to edit three files and replace the placeholders within them:
+\begin{description}
+\item[xacml.wsdl] Go to the end of the file. In the section \emph{Servicedefinition} you will find the placeholder \emph{$<$YOUR\_LOCATION$>$}. Replace it with the path where a client will be able to call your \emph{xacml.php}.
+\item[xacml.php] At the top of the file you will find the placeholder \emph{$<$PATH\_TO\_RBAC$>$}. Replace it with a relative or absolute path to your RBAC Framework. This value will be used twice in \emph{xacml.php}. First it is used to include the RBAC Framework and second to tell the RBAC Framework where it is located. Afer having set this, you need to replace the placeholder \emph{$<$PATH\_TO\_WSDL$>$} in the same file. Set the path to the WSDL file you have just edited to fit your installation.
+\item[xacmlCheckAccess.php] This is the client. If you want to use it you have to replace the placeholder \emph{$<$PATH\_TO\_WSDL$>$} as you did in \emph{xacml.php}.
+\emph{Notice}: If you have a close look at the WSDL file (see App. \ref{sec:appendix:xacmlwsdl}), you might recognice that the imported XML schema is not located at the OASIS web page but at the web page of DAASI International GmbH. The reason for this is, that the XML schema you can download at OASIS is flawed and cannot be used for an XSD import. To verify this, download the files from OASIS and make a \emph{diff} between the corresponding files served at the DAASI web page and included in this document (see App. \ref{sec:appendix:schemafiles}).
+\end{description}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{Closing words}
+\label{subsec:xacmlsoap:closingwords}
+% --------------------------------------------------------------------------
+If your RBAC is configured well and found to work properly, you now should be able to determin decisions of RBAC via a SOAP service using standardised SAML/XACML. But remember that this project is still very young. So at the moment it is not possible to tell the SOAP servive to examine certificates send within the SAML request to decide if the client is trusted.
+%
+%
+\begin{appendix}
+\tiny
+%
+%
+% --------------------------------------------------------------------------
+\section{Configuration files}
+\label{sec:appendix:configurationfiles}
+% --------------------------------------------------------------------------
+%
+%
+% --------------------------------------------------------------------------
+\subsection{rbac.conf.dist}
+\label{subsec:appendix:configurationfiles:rbacconfdist}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+  <section name="user">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=users,ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="filter">(objectClass=inetorgperson)</var>
+    <var name="namingattribute">uid</var>
+  </section>
+
+  <section name="role">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=roles,ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="namingattribute">rbacname</var>
+    <var name="filter">(objectClass=rbacrole)</var>
+
+    <!-- May also be member to have greater compatibility with
+         allready existing entries in your LDAP-server //-->
+    <var name="assignedattribute">rbacperformer</var>
+  </section>
+
+  <section name="project">
+    <var name="base">ou=Projekt-Teilnehmer,ou=roles,ou=rbac,dc=example,dc=org</var>
+  </section>
+
+  <section name="session">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=sessions,ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="namingattribute">rbacname</var>
+    <var name="filter">(objectClass=rbacsession)</var>
+  </section>
+
+  <section name="resource">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="namingattribute">rbacname</var>
+    <var name="aliasattribute">rbacname</var>
+    <var name="filter">(objectClass=rbacresource)</var>
+  </section>
+
+  <section name="ssd">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=ssd,ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="filter">(objectClass=rbacssd)</var>
+  </section>
+
+  <section name="dsd">
+    <var name="host">ldap.example.org</var>
+    <var name="port">389</var>
+    <var name="version">3</var>
+    <var name="tls">no</var>
+    <var name="base">ou=dsd,ou=rbac,dc=example,dc=org</var>
+    <var name="binddn">cn=application,ou=dsa,dc=example,dc=org</var>
+    <var name="password">secret</var>
+    <var name="filter">(objectClass=rbacdsd)</var>
+  </section>
+
+
+  <section name="errorCode">
+    <var name="OK">1</var>
+    <var name="RESOURCE_OPERATION_ERROR">2</var>
+    <var name="RESOURCE_UNKNOWN">4</var>
+    <var name="USER_SESSION_ERROR">8</var>
+    <var name="SESSION_ALLREADY_EXISTS">16</var>
+    <var name="SESSION_DOES_NOT_EXISTS">32</var>
+    <var name="USER_UNKNOWN">64</var>
+    <var name="USER_ROLE_ERROR">128</var>
+    <var name="USER_ALLREADY_EXISTS">256</var>
+    <var name="INVALID_USER_FORMAT">512</var>
+    <var name="ROLE_ALLREADY_EXISTS">1024</var>
+    <var name="ROLE_UNKNOWN">2048</var>
+    <var name="LDAP_ERROR">4096</var>
+    <var name="UNKNOWN_ERROR">8192</var>
+    <var name="SD_ALLREADY_EXISTS">16384</var>
+    <var name="SD_CARDINALITY">32768</var>
+    <var name="SD_UNKNOWN">65536</var>
+  </section>
+
+  <section name="errorDescription">
+    <var name="OK">Ok</var>
+    <var name="RESOURCE_OPERATION_ERROR">This resource-operation-combination is invalid.</var>
+    <var name="RESOURCE_UNKNOWN">The resource is not known or not uniqueue.</var>
+    <var name="USER_SESSION_ERROR">The user you gave is not the owner of this session.</var>
+    <var name="SESSION_ALLREADY_EXISTS">The session allready exists so you can not create it.</var>
+    <var name="SESSION_DOES_NOT_EXISTS">The session does not exist.</var>
+    <var name="USER_UNKNOWN">The user is not known.</var>
+    <var name="USER_ROLE_ERROR">This user-role-combination is invalid.</var>
+    <var name="USER_ALLREADY_EXISTS">The user allready exists.</var>
+    <var name="INVALID_USER_FORMAT">The user has to have the the format: &lt;username&gt;@&lt;domain&gt;
+                                    (foo@example.org)</var>
+    <var name="ROLE_ALLREADY_EXISTS">The role allready exists.</var>
+    <var name="ROLE_UNKNOWN">The role is unknown.</var>
+    <var name="LDAP_ERROR">An LDAP-Error occured, see description: </var>
+    <var name="UNKNOWN_ERROR">An error occured.</var>
+    <var name="SD_ALLREADY_EXISTS">The Separation of Duty Set allready exists.</var>
+    <var name="SD_CARDINALITY">The given cardinality is invalid! Make sure it is >= 2</var>
+    <var name="SD_UNKNOWN">The Separation of Duty set is unknown</var>
+  </section>
+
+</configuration>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{system.conf.dist}
+\label{subsec:appendix:configurationfiles:systemconfdist}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<system>
+
+  <!-- This is the system-configuration for the RBAC-Framework.
+       The RBAC libraries need an additional configuration-file
+       where you have to define all LDAP-specific settings. Tell
+       the RBAC-Framework where it can find this configuration.
+       Specify a full path or a path relative to your main
+       application. -->
+  <configuration file="PATH_TO/rbac.conf" />
+
+
+  <!-- Here you can specify if you want to use Core RBAC or the
+       Limited Hierarchical RBAC. In order to work properly both
+       libraries need a couple of classes specified through
+       the "require" statements. Again you have to specify a full
+       path or a path relative to your main application. -->
+  <rbac class="RBAClimitedHirarchical">
+    <require file="PATH_TO/iContext.interface.php" />
+    <require file="PATH_TO/iHelper.interface.php" />
+    <require file="PATH_TO/iCrypto.interface.php" />
+    <require file="PATH_TO/iLDAP.interface.php" />
+    <require file="PATH_TO/iRBACcore.interface.php" />
+    <require file="PATH_TO/iRBAClimitedHirarchical.interface.php" />
+
+    <require file="PATH_TO/RBACException.class.php" />
+    <require file="PATH_TO/RBACExtension.class.php" />
+    <require file="PATH_TO/Context.class.php" />
+    <require file="PATH_TO/Helper.class.php" />
+    <require file="PATH_TO/LDAP.class.php" />
+    <require file="PATH_TO/Crypto.class.php" />
+    <require file="PATH_TO/SimpleConfig.class.php" />
+    <require file="PATH_TO/RBACcore.class.php" />
+    <require file="PATH_TO/RBAClimitedHirarchical.class.php" />
+  </rbac>
+
+
+  <!-- Specify the extensions you want to use through the
+       RBAC-Framework. Give a full path or a path relative
+       to your main application. -->
+  <extension class="SSD" file="PATH_TO/SSD.class.php" />
+  <extension class="DSD" file="PATH_TO/DSD.class.php" />
+  <extension class="UserEntry" file="PATH_TO/UserEntry.class.php" />
+  <extension class="Logger" file="PATH_TO/Logger.class.php" />
+
+</system>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\section{xacml.wsdl}
+\label{sec:appendix:xacmlwsdl}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+
+<wsdl:definitions name="xacml"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:tns="http://daasi.de/namespaces/rbac/xacml"
+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                  targetNamespace="http://daasi.de/namespaces/rbac/xacml"
+                  xmlns:xacml-samlp="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+                  xmlns:xacml-saml="urn:oasis:xacml:2.0:saml:assertion:schema:os">
+
+
+  <!--
+  ####################
+  # Type Definitions #
+  ####################
+  //-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://daasi.de/namespaces/rbac/xacml">
+      <xsd:import namespace="urn:oasis:xacml:2.0:saml:assertion:schema:os"
+                  schemaLocation="http://www.daasi.de/schema/oasis/access_control-xacml-2.0-saml-assertion-schema-os.xsd" />
+      <xsd:import namespace="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+                  schemaLocation="http://www.daasi.de/schema/oasis/access_control-xacml-2.0-saml-protocol-schema-os.xsd"/>
+
+    </xsd:schema>
+
+  </wsdl:types>
+
+
+  <!--
+  #################
+  # WSDL-Messages #
+  #################
+  //-->
+  <!-- #### checkXACMLaccess #### //-->
+  <wsdl:message name="checkXACMLaccessRequest">
+    <wsdl:part element="xacml-samlp:XACMLAuthzDecisionQuery" name="checkXACMLaccessInput" />
+  </wsdl:message>
+  <wsdl:message name="checkXACMLaccessResponse">
+    <wsdl:part element="xacml-saml:XACMLAuthzDecisionStatement" name="checkXACMLaccessOutput" />
+  </wsdl:message>
+
+
+  <!--
+  #########################
+  # Port-Type-Definitions #
+  #########################
+  //-->
+  <wsdl:portType name="port_xacml">
+
+    <!-- #### checkXACMLaccess #### //-->
+    <wsdl:operation name="checkXACMLaccess">
+      <wsdl:input message="tns:checkXACMLaccessRequest" />
+      <wsdl:output message="tns:checkXACMLaccessResponse" />
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+
+  <!--
+  ###########
+  # Binding #
+  ###########
+  //-->
+  <wsdl:binding name="binding_xacml" type="tns:port_xacml">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+
+    <!-- #### checkXACMLaccess #### //-->
+    <wsdl:operation name="checkXACMLaccess">
+      <soap:operation soapAction="http://daasi.de/rbac/xacml/checkXACMLaccess" />
+      <wsdl:input><soap:body use="literal" /></wsdl:input>
+      <wsdl:output><soap:body use="literal" /></wsdl:output>
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+
+  <!--
+  #####################
+  # Servicedefinition #
+  #####################
+  //-->
+  <wsdl:service name="xacml">
+    <wsdl:port binding="tns:binding_xacml" name="tns:xacml">
+      <soap:address location="http://<YOUR_LOCATION>/xacml.php" />
+    </wsdl:port>
+  </wsdl:service>
+
+</wsdl:definitions>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\section{Schema files}
+\label{sec:appendix:schemafiles}
+% --------------------------------------------------------------------------
+%
+%
+% --------------------------------------------------------------------------
+\subsection{XACML Saml Protocol}
+\label{sec:appendix:schemafiles:xacmlsamlprotocol}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<schema
+    targetNamespace="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+    xmlns:tns="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns="http://www.w3.org/2001/XMLSchema"
+    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
+    xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+    xmlns:xacml="urn:oasis:names:tc:xacml:2.0:policy:schema:os"
+    elementFormDefault="unqualified"
+    attributeFormDefault="unqualified"
+    blockDefault="substitution"
+    version="2.0">
+  <xs:import namespace="urn:oasis:names:tc:SAML:2.0:protocol"
+      schemaLocation="http://www.daasi.de/schema/oasis/saml-schema-protocol-2.0.xsd"/>
+  <xs:import namespace="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+      schemaLocation="http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-context-schema-os.xsd"/>
+  <xs:annotation>
+    <xs:documentation>
+        Document identifier: access_control-xacml-2.0-saml-protocol-schema-os.xsd
+        Location: http://docs.oasis-open.org/xacml/2.0/
+                         access_control-xacml-2.0-saml-protocol-schema-os.xsd
+    </xs:documentation>
+  </xs:annotation>
+  <!--    -->
+  <xs:element name="XACMLAuthzDecisionQuery"
+           type="tns:XACMLAuthzDecisionQueryType"/>
+  <xs:complexType name="XACMLAuthzDecisionQueryType">
+    <xs:complexContent>
+      <xs:extension base="samlp:RequestAbstractType">
+        <xs:sequence>
+          <xs:element ref="xacml-context:Request"/>
+        </xs:sequence>
+        <xs:attribute name="InputContextOnly"
+                      type="boolean"
+                      use="optional"
+                      default="false"/>
+        <xs:attribute name="ReturnContext"
+                      type="boolean"
+                      use="optional"
+                      default="false"/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <!--    -->
+  <xs:element name="XACMLPolicyQuery"
+           type="tns:XACMLPolicyQueryType"/>
+  <xs:complexType name="XACMLPolicyQueryType">
+    <xs:complexContent>
+      <xs:extension base="samlp:RequestAbstractType">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="xacml-context:Request"/>
+          <xs:element ref="xacml:Target"/>
+          <xs:element ref="xacml:PolicySetIdReference"/>
+          <xs:element ref="xacml:PolicyIdReference"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+</schema>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{XACML Saml Assertion}
+\label{sec:appendix:schemafiles:xacmlsamlassertion}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<?xml version="1.0" encoding="UTF-8"?>
+<schema
+    targetNamespace="urn:oasis:xacml:2.0:saml:assertion:schema:os"
+    xmlns:tns="urn:oasis:xacml:2.0:saml:assertion:schema:os"
+    xmlns="http://www.w3.org/2001/XMLSchema"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
+    xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+    xmlns:xacml="urn:oasis:names:tc:xacml:2.0:policy:schema:os"
+    elementFormDefault="unqualified"
+    attributeFormDefault="unqualified"
+    blockDefault="substitution"
+    version="2.0">
+  <xs:import namespace="urn:oasis:names:tc:SAML:2.0:assertion"
+      schemaLocation="http://www.daasi.de/schema/oasis/saml-schema-assertion-2.0.xsd"/>
+  <xs:import namespace="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+      schemaLocation="http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-context-schema-os.xsd"/>
+  <xs:annotation>
+    <xs:documentation>
+        Document identifier: access_control-xacml-2.0-saml-assertion-schema-cd-02.xsd
+        Location: http://docs.oasis-open.org/xacml/2.0/
+                         access_control-xacml-2.0-saml-assertion-schema-cd-os.xsd
+    </xs:documentation>
+  </xs:annotation>
+  <!--    -->
+  <xs:element name="XACMLAuthzDecisionStatement"
+           type="tns:XACMLAuthzDecisionStatementType"/>
+  <xs:complexType name="XACMLAuthzDecisionStatementType">
+    <xs:complexContent>
+      <xs:extension base="saml:StatementAbstractType">
+        <xs:sequence>
+          <xs:element ref="xacml-context:Response"/>
+          <xs:element ref="xacml-context:Request"  minOccurs="0"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <!--    -->
+  <xs:element name="XACMLPolicyStatement"
+           type="tns:XACMLPolicyStatementType"/>
+  <xs:complexType name="XACMLPolicyStatementType">
+    <xs:complexContent>
+      <xs:extension base="saml:StatementAbstractType">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="xacml:Policy"/>
+          <xs:element ref="xacml:PolicySet"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+</schema>
+\end{verbatim}
+%
+%
+%
+%
+% --------------------------------------------------------------------------
+\subsection{RBAC with XACML via SOAP}
+\label{sec:appendix:rbacwithxacmlviasoap}
+% --------------------------------------------------------------------------
+%
+%
+% --------------------------------------------------------------------------
+\subsection{SOAP request}
+\label{sec:appendix:rbacwithxacmlviasoap:soaprequest}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<SOAP-ENV:Envelope
+      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+      xmlns:ns1="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+      xmlns:ns2="urn:oasis:xacml:2.0:saml:protocol:schema:os">
+
+<SOAP-ENV:Body>
+  <ns2:XACMLAuthzDecisionQuery ID="abcde1234" Version="2.0" ReturnContext="true">
+    <ns1:Request>
+      <ns1:Subject>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
+                       DataType="http://www.w3.org/2001/XMLSchema#string">
+          <ns1:AttributeValue>
+            SID_ryytp55xUIvmoXEv663QWeYoj0t2s6COeX56nbGpUkxj1R7pCXNqT49umfFs1I9JvI
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Subject>
+      <ns1:Resource>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
+                       DataType="http://www.w3.org/2001/XMLSchema#anyURI">
+          <ns1:AttributeValue>
+            textgrid:TGPR3:Die+Leiden+des+jungen+Werther+-+Zweyter+Theil:20080327T170038:xml%2Ftei:1
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Resource>
+      <ns1:Action>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
+                       DataType="http://www.w3.org/2001/XMLSchema#string">
+          <ns1:AttributeValue>
+            read
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Action>
+      <ns1:Environment/>
+    </ns1:Request>
+  </ns2:XACMLAuthzDecisionQuery>
+</SOAP-ENV:Body>
+
+</SOAP-ENV:Envelope>
+\end{verbatim}
+%
+%
+% --------------------------------------------------------------------------
+\subsection{SOAP response}
+\label{sec:appendix:rbacwithxacmlviasoap:soapresponse}
+% --------------------------------------------------------------------------
+\begin{verbatim}
+<SOAP-ENV:Envelope
+      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+      xmlns:ns1="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+      xmlns:ns2="urn:oasis:xacml:2.0:saml:assertion:schema:os>
+
+<SOAP-ENV:Body>
+  <ns2:XACMLAuthzDecisionStatement>
+    <ns1:Response>
+      <ns1:Result>
+        <ns1:Decision>
+          Permit
+        </ns1:Decision>
+      </ns1:Result>
+    </ns1:Response>
+    <ns1:Request>
+      <ns1:Subject>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
+                       DataType="http://www.w3.org/2001/XMLSchema#string">
+          <ns1:AttributeValue>
+            SID_ryytp55xUIvmoXEv663QWeYoj0t2s6COeX56nbGpUkxj1R7pCXNqT49umfFs1I9JvI
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Subject>
+      <ns1:Resource>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
+                       DataType="http://www.w3.org/2001/XMLSchema#anyURI">
+          <ns1:AttributeValue>
+            textgrid:TGPR3:Die+Leiden+des+jungen+Werther+-+Zweyter+Theil:20080327T170038:xml%2Ftei:1
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Resource>
+      <ns1:Action>
+        <ns1:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
+                       DataType="http://www.w3.org/2001/XMLSchema#string">
+          <ns1:AttributeValue>
+            read
+          </ns1:AttributeValue>
+        </ns1:Attribute>
+      </ns1:Action>
+      <ns1:Environment/>
+    </ns1:Request>
+  </ns2:XACMLAuthzDecisionStatement>
+</SOAP-ENV:Body>
+
+</SOAP-ENV:Envelope>
+\end{verbatim}
+%
+%
+\end{appendix}
+%
+%
+\bibliography{literature}
+\bibliographystyle{alpha}
+%
 \end{document}
\ No newline at end of file
diff --git a/info.textgrid.middleware.tgauth.rbac/documentation/literature.bib b/info.textgrid.middleware.tgauth.rbac/documentation/literature.bib
new file mode 100644
index 0000000..0950266
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/documentation/literature.bib
@@ -0,0 +1,119 @@
+% Literaturverzeichnis
+% --------------------
+@proceedings{rbac2004,
+  title = {Role Based Access Control},
+  year = {2004},
+  organization = {ANSI incits}
+}
+
+@techreport{widmer2006,
+  author = {Markus Widmer},
+  title = {Role Based Access Control mit OpenLDAP},
+  institution = {Universit\"at T\"ubingen},
+  year = {2005}
+}
+
+@techreport{saml2006,
+  author = {Nick Ragouzis and John Hughes and Rob Philpott and Eve Maler},
+  title = {Security Assertion Markup Language (SAML) V2.0 Technical Overview},
+  institution = {OASIS},
+  year = 2006
+}
+
+@techreport{chadwickmsod,
+  author = {David M Chadwick},
+  title = {Multi-session Separation of Duties (MSoD) for RBAC},
+  institution = {University of Kent},
+  year = 2006
+}
+
+@misc{openldap,
+  key = {OpenLDAP Project},
+  title = {OpenLDAP Software 2.3 Administrators Guide},
+  month = 10,
+  year = 2007
+}
+
+@proceedings{rfc4511,
+  title = {RFC 4511, Lightweight Directory Access Protocol (LDAP)},
+  year = 2006,
+  organization = {Network Working Group},
+  author = {J. Sermersheim}
+}
+
+@proceedings{rfc4515,
+  title = {RFC 4515, String Representation of Search Filters},
+  year = 2006,
+  organization = {Network Working Group},
+  author = {M. Smith}
+}
+
+@proceedings{rfc2141,
+  title ={RFC 2141, URN Syntax},
+  year = 1997,
+  organization = {Network Working Group},
+  author = {R. Moats}
+}
+
+@proceedings{wsdl1.1,
+  title = {Web Services Description Language (WSDL) 1.1},
+  year = 2001,
+  organization = {W3C},
+  author = {Erik Christensen and Francisco Curbera and Greg Meredith and Sanjiva Weerawarana}
+}
+
+@proceedings{soap,
+  title = {SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)},
+  year = 2007,
+  organization = {W3C},
+  author = {Martin Gudgin and Marc Hadley and Noah Mendelsohn and Jean-Jacques Moreau and Henrik Frystyk Nielsen and Anish Karmarkar and Yves Lafon}
+}
+
+@book{pdsa2,
+  title = {Pattern-Oriented Software Architecture},
+  author = {D. Schmidt and M. Stal and H. Rohnert and F. Buschmann},
+  publisher = {Wiley \& Sons Ltd.},
+  year = 2000,
+  volume = {2},
+  isbn = {0-471-60695-2}
+}
+
+@book{oli78,
+	author = {Oliver Ian},
+	title = {Klassische Programmiertechnik - Eine Sammlung der hervorragendsten Algorithmen},
+	publisher = {Prentice Hall},
+	year = 1994
+}
+
+@book{thegrid,
+  author = {Ian Foster and Carl Kesselman},
+  title = {The Grid: Blueprint for a new computing infrastructure},
+  publisher = {Elsevier Inc.},
+  year = 2004
+}
+
+@inproceedings{tgehum2006,
+  title = {TextGrid and eHumanities},
+  year = 2006,
+  author = {Peter Gietz and Andreas Aschenbrenner and Stefan B\"udenbender and Fotis Jannidis and Marc W. K\"uster and Christoph Ludwig and Wolfgang Pempe and Thorsten Vitt and Werner Wegstein and Andrea Zielinski},
+  booktitle = {Proc. of Second IEEE International Conference on e-Science, December 4-6, 2006, Amsterdam},
+  publisher = {IEEE CS Press}
+}
+
+@techreport{tgarch2007,
+  title = {TextGrid Architektur},
+  author = {Andreas Aschenbrenner and Peter Gietz and Martin Haase and Frank Knoll and
+Christoph Ludwig and Wolfgang Pempe and Markus Sosto and Thorsten Vitt},
+  institution = {Nieders\"achsische Saats- und Universit\"atsbibliothek, G\"ottingen und DAASI International GmbH},
+  year = 2007,
+  url = {http://www.textgrid.de}
+}
+
+@techreport{xacmlsaml2005,
+  title = {SAML 2.0 profile of XACML v2.0},
+  author = {Anne Anderson and Hal Lockhart},
+  url = {http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-saml-profile-spec-os.pdf},
+  year = 2005,
+  institution = {OASIS},
+  publisher = {OASIS}
+}
\ No newline at end of file
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/Authentication.class.php b/info.textgrid.middleware.tgauth.rbac/lib/Authentication.class.php
new file mode 100755
index 0000000..13f9459
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/Authentication.class.php
@@ -0,0 +1,100 @@
+<?php
+// ####################################################################
+// Version: 0.1.0
+// Author: Markus Widmer
+// Created: 19.01.2007
+// Modified: 07.10.2007
+
+
+
+
+class Authentication {
+
+  // ## Class-variables ###############################################
+  private $connection;
+
+
+
+
+  // ## Constructor ###################################################
+  public function __construct( CConnection $inConnection ) {
+
+    // To use the connection it has to have an established
+    // connection to the database.
+    if( $inConnection->handle->hasConnection() ) {
+
+      $this->connection = $inConnection;
+
+    }
+    else {
+
+      throw new Exception( "Authentication::__construct() Unable to use this connection!" );
+
+    }
+
+  }
+
+
+
+
+  // ## ldap ##########################################################
+  public function ldap( $inUsername, $inPassword, $inAttribute = "uid", Array $inArrProvide = null ) {
+
+    $log = new Log();
+    $filter = "";     // The LDAP filter to search for the user
+    $dn = "";         // The DN of the user
+    $result = false;  // The default return value is false
+
+
+    // The type of connection has to be a LDAP connection
+    if( $this->connection instanceof CLDAPConnection ) {
+
+      // If the username is just a name, search for it
+      // in the directory before trying to bind.
+      if( !preg_match( "/^(.+=.+)+,(.+=.+)$/", $inUsername ) ) {
+
+        // Search for a user that fits the username
+        $log->debug( $this->connection->filter . "\n" );
+        $filter  = "(&" . $this->connection->filter;
+        $filter .= "(" . $inAttribute . "=" . $inUsername . "))";
+
+
+        // Ask the directory
+        $arrUserEntry = $this->connection->handle->search( $this->connection->base, $filter, "sub", Array( $inAttribute ) );
+
+
+        if( sizeof( $arrUserEntry ) == 1 ) {
+
+          if( $this->connection->handle->bind( $arrUserEntry[0]['dn'], $inPassword ) ) {
+
+            $result = $arrUserEntry[0]['dn'];
+
+          }
+
+        }
+
+      }
+      else {
+
+        if( $this->connection->handle->bind( $inUsername, $inPassword ) ) {
+
+          $result = $inUsername;
+
+        }
+
+      }
+
+    }
+    else {
+
+      throw new Exception( "Authentication::setMethod() Cannot use this connection in LDAP-mode." );
+
+    }
+
+
+    return $result;
+
+  }
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/CConnection.container.php b/info.textgrid.middleware.tgauth.rbac/lib/CConnection.container.php
new file mode 100755
index 0000000..6e95f2e
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/CConnection.container.php
@@ -0,0 +1,21 @@
+<?php
+// ####################################################################
+// Version: 0.1.0
+// Author: Markus Widmer
+// Created: 02.04.2008
+// Modified: 03.04.2008
+
+
+
+
+class CConnection {
+
+  // ## Class-variable ################################################
+  public $handle;
+  public $host;
+  public $port;
+  public $bind;
+  public $password;
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/CLDAPConnection.container.php b/info.textgrid.middleware.tgauth.rbac/lib/CLDAPConnection.container.php
new file mode 100755
index 0000000..3ac966e
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/CLDAPConnection.container.php
@@ -0,0 +1,19 @@
+<?php
+// ####################################################################
+// Version: 0.1.0
+// Author: Markus Widmer
+// Created: 02.04.2008
+// Modified: 03.04.2008
+
+
+
+
+class CLDAPConnection extends CConnection {
+
+  // ## Klassenvariablen ##############################################
+  public $tls;
+  public $filter;
+  public $version;
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/CSQLConnection.container.php b/info.textgrid.middleware.tgauth.rbac/lib/CSQLConnection.container.php
new file mode 100755
index 0000000..ab6e201
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/CSQLConnection.container.php
@@ -0,0 +1,18 @@
+<?php
+// ####################################################################
+// Version: 0.1.0
+// Author: Markus Widmer
+// Created: 02.04.2008
+// Modified: 03.04.2008
+
+
+
+
+class CSQLConnection extends CConnection {
+
+  // ## Klassenvariablen ##############################################
+  public $table;
+  public $database;
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/DataBase.class.php b/info.textgrid.middleware.tgauth.rbac/lib/DataBase.class.php
index d2fedf6..f5c343b 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/DataBase.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/DataBase.class.php
@@ -1,9 +1,9 @@
 <?php
 // ####################################################################
-// Version: 0.3.3
+// Version: 0.4.0
 // Author: Markus Widmer
 // Created: 09.11.2006
-// Modified: 02.04.2008
+// Modified: 12.07.2008
 
 
 
@@ -108,12 +108,13 @@ class DataBase implements iDataBase {
     $helper = new Helper();    // Konvertierungsklasse
 
 
+/*
     if( $helper->isUtf8( $inFilter ) ) {
 
       $inFilter = utf8_decode( $inFilter );
 
     }
-
+*/
 
     // Eventuell eine Liste von Spalten zusammenstellen,
     // die zurueckgegeben werden sollen
@@ -185,7 +186,7 @@ class DataBase implements iDataBase {
         }
 
 
-        array_push( &$result, $mysqlResult );
+        $result[] = $mysqlResult;
 
       }
 
@@ -237,7 +238,7 @@ class DataBase implements iDataBase {
         }
 
 
-        array_push( &$result, $mysqlResult );
+        $result[] = $mysqlResult;
 
       }
 
@@ -293,7 +294,7 @@ class DataBase implements iDataBase {
         // Es wird darauf geprueft, ob wirklich alle Felder, die einen
         // primaeren Schluessel darstellen, angegeben sind.
         $keyInData = $keyInData && isset( $inData[$column[$i]['Field']] ) && preg_match( "/.+/", $inData[$column[$i]['Field']] );
-        array_push( &$columnPrimaryKey, $column[$i]['Field'] );
+        $columnPrimaryKey[] = $column[$i]['Field'];
 
 
         if( $keyInData ) {
@@ -330,7 +331,7 @@ class DataBase implements iDataBase {
         $checkResult = Array();
         while( $mysqlResult = mysql_fetch_array( $mysqlQuery, MYSQL_ASSOC ) ) {
 
-          array_push( &$checkResult, $mysqlResult );
+          $checkResult[] = $mysqlResult;
 
         }
 
@@ -408,7 +409,6 @@ class DataBase implements iDataBase {
     }
 
 
-
     // Verbindung mit der Datenbank aufbauen
     if( $this->hasConnection ) {
 
@@ -417,7 +417,7 @@ class DataBase implements iDataBase {
       //    ist keine Spalte dabei, die ein "auto_increment" enthaelt.
       // 2. Es sind alle Schluessel vorhanden und der Datensatz existiert bereits in der
       //    Tabelle
-      if( (!$keyInData && ($columnAutoincrement != "")) || ($keyInData && $allreadyExists) ) {
+      if( ($keyInData && ($columnAutoincrement == "")) || ($keyInData && $allreadyExists) ) {
 
         // Wenn es sich um einen "insert"-Befehl handelt, dann soll die Datenbank
         // gesperrt werden, um anschliessend den neu eingefuegten Datensatz wieder
@@ -429,14 +429,14 @@ class DataBase implements iDataBase {
         }
 
 
-        trigger_error( "Query: " . $queryString . "\n", E_USER_NOTICE );
+        trigger_error( "DataBase::store() Query: " . $queryString . "\n", E_USER_NOTICE );
 
 
         // Sollte ein Wert UTF8-codiert sein, so muss dies der Datenbank
         // gesagt werden
         if( $useUtf8 ) {
 
-          trigger_error( "DataBase::store(): Using UTF8 for submission.\n", E_USER_NOTICE );
+          trigger_error( "DataBase::store() Using UTF8 for submission.\n", E_USER_NOTICE );
 
           mysql_query( "SET CHARACTER SET \"utf8\"" );
 
@@ -460,7 +460,7 @@ class DataBase implements iDataBase {
           $lastInsertResult = Array();
           while( $mysqlResult = mysql_fetch_array( $mysqlQuery, MYSQL_ASSOC ) ) {
 
-            array_push( &$lastInsertResult, $mysqlResult );
+            $lastInsertResult[] = $mysqlResult;
 
           }
 
@@ -564,7 +564,7 @@ class DataBase implements iDataBase {
           }
 
 
-          array_push( &$returnResult, $mysqlResult );
+          $returnResult[] = $mysqlResult;
 
         }
 
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/Date.class.php b/info.textgrid.middleware.tgauth.rbac/lib/Date.class.php
new file mode 100755
index 0000000..97439a8
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/Date.class.php
@@ -0,0 +1,384 @@
+<?php
+// ####################################################################
+// Version: 0.2.0
+// Autor: Markus Widmer
+// Erstellungsdatum: 16.09.2007
+// Letzte Aenderung: 21.01.2008
+
+
+
+
+class Date implements iDate {
+
+  // ## Klassenvariablen ##############################################
+  private $language = "";
+  private $timestamp;
+  private $arrDate;
+
+
+
+
+  // ## Konstruktor ###################################################
+  public function __construct( $inTimestamp, $inLanguage = false ) {
+
+    $inTimestamp ? $this->timestamp = $inTimestamp : $this->timestamp = time();
+    $inLanguage ? $this->language = $inLanguage : $this->language = "en";
+
+
+    if( $inTimestamp != 0 ) {
+
+      $this->timestamp = $inTimestamp;
+      $this->fillArrDate();
+
+    }
+    else {
+
+      $arrDate = Array();
+
+    }
+
+  }
+
+
+
+
+  // ## parseGeneralizedTime ##########################################
+  public function parseGeneralizedTime( $inGeneralizedTime ) {
+
+    $year;    // Jahr
+    $month;   // Monat
+    $day;     // Tag
+    $minute;  // Minute
+    $hour;    // Stunde
+    $second;  // Sekunde
+
+
+    if( preg_match( "/[0-9]{14}Z/i", $inGeneralizedTime ) ) {
+
+      $year = substr( $inGeneralizedTime, 0, 4 );
+      $month = substr( $inGeneralizedTime, 4, 2 );
+      $day = substr( $inGeneralizedTime, 6, 2 );
+      $hour = substr( $inGeneralizedTime, 8, 2 );
+      $minute = substr( $inGeneralizedTime, 10, 2 );
+      $second = substr( $inGeneralizedTime, 12, 2 );
+
+
+      $this->timestamp = mktime( $hour, $minute, $second, $month, $day, $year );
+      $this->fillArrDate();
+
+
+      return true;
+
+    }
+    else {
+
+      return false;
+
+    }
+
+  }
+
+
+
+
+  // ## parseMySQLDatetime ###########################################
+  public function parseMySQLDatetime( $inDatetime ) {
+
+    $pregString = "";
+    $tmp = Array();
+
+
+    // Datumsformat mit Zeitangabe in der MySQL Datenbank
+    $pregString .= "/^[0-9]{4}[-]{1}[0-9]{1,2}[-]{1}[0-9]{1,2}";
+    $pregString .= "[\s]+[0-9]{1,2}([:]{1}[0-9]{1,2}){2}$/";
+
+
+    if( preg_match( $pregString, $inDatetime ) ) {
+
+      // Leerzeichen so lange entfernen, bis nur noch
+      // einzelne Leerzeichen vorhanden sind.
+      while( preg_match( "/[\s]{2}/", $inDatetime ) ) {
+
+        $inDatetime = preg_replace( "/[\s]{2}/", " ", $inDatetime );
+
+      }
+
+
+      $tmp = preg_split( "/[\s]/", $inDatetime );
+
+
+      if( is_array( $tmp ) ) {
+
+        isset( $tmp[0] ) ? $tmpDate = preg_split( "/[-]/", $tmp[0] ) : $tmpDate = Array();
+        isset( $tmp[1] ) ? $tmpTime = preg_split( "/[:]/", $tmp[1] ) : $tmpTime = Array();
+
+        if( sizeof( $tmpDate ) == 3 ) {
+
+          $this->timestamp = mktime( $tmpTime[0], $tmpTime[1], $tmpTime[2], $tmpDate[1], $tmpDate[2], $tmpDate[0] );
+          $this->fillArrDate();
+
+
+          return true;
+
+        }
+        else {
+
+          return false;
+
+        }
+
+      }
+
+
+      return true;
+
+    }
+    else {
+
+      return false;
+
+    }
+
+  }
+
+
+
+
+  // ## parseMySQLDatetime ###########################################
+  public function parseMySQLDate( $inDate ) {
+
+    $pregString = "";
+    $tmp = Array();
+
+
+    // Datumsformat ohne Zeitangabe in der MySQL Datenbank
+    $pregString .= "/^[0-9]{4}[-]{1}[0-9]{1,2}[-]{1}[0-9]{1,2}$/";
+
+
+    if( preg_match( $pregString, $inDate ) ) {
+
+      // Alle Leerzeichen entfernen.
+      $inDate = preg_replace( "/[\s]/", "", $inDate );
+
+
+      $tmpDate = preg_split( "/[-]/", $inDate );
+
+      if( sizeof( $tmpDate ) == 3 ) {
+
+        $this->timestamp = mktime( 0, 0, 0, $tmpDate[1], $tmpDate[2], $tmpDate[0] );
+        $this->fillArrDate();
+
+
+        return true;
+
+      }
+      else {
+
+        return false;
+
+      }
+
+    }
+
+  }
+
+
+
+
+  // ## setLanguage ###################################################
+  public function setLanguage( $inLanguage ) {
+
+    $this->language = $inLanguage;
+
+  }
+
+
+
+
+  // ## setTimestamp ##################################################
+  public function setTimestamp( $inTimestamp ) {
+
+    if( is_int( $inTimestamp ) ) {
+
+      $this->timestamp = $inTimestamp;
+      return true;
+
+    }
+    else {
+
+      return false;
+
+    }
+
+  }
+
+
+
+
+  // ## parseDateFirst ################################################
+  public function parseDateFirst( $inText ) {
+
+    $tmp = Array();
+    $tmpDate = Array();
+    $tmpTime = Array( "12", "0", "0" );
+    $arrDateAndTime = Array();
+    $pregString = "";
+    $dateTime = "";
+
+
+    if( preg_match( "/^de$/i", $this->language ) ) {
+
+      // Deutsches Datumsformat
+      $pregString .= "/^[0-9]{1,2}[.]{1}[0-9]{1,2}[.]{1}[0-9]{4}";
+      $pregString .= "([\s]+[0-9]{1,2}([:]{1}[0-9]{1,2}){1,2}?)?$/";
+
+
+      if( preg_match( $pregString, $inText ) ) {
+
+        while( preg_match( "/[\s]{2}/", $inText ) ) {
+
+          $inText = preg_replace( "/[\s]{2}/", " ", $inText );
+
+        }
+
+
+        $tmp = preg_split( "/[\s]/", $inText );
+
+      }
+      else {
+
+        return false;
+
+      }
+
+
+      if( is_array( $tmp ) ) {
+
+        isset( $tmp[0] ) ? $tmpDate = preg_split( "/[.]/", $tmp[0] ) : false;
+        isset( $tmp[1] ) ? $tmpTime = preg_split( "/[:]/", $tmp[1] ) : false;
+
+        if( sizeof( $tmpDate ) == 3 ) {
+
+          $this->timestamp = mktime( $tmpTime[0], $tmpTime[1], $tmpTime[2], $tmpDate[1], $tmpDate[0], $tmpDate[2] );
+          $this->fillArrDate();
+
+
+          return true;
+
+        }
+        else {
+
+          return false;
+
+        }
+
+      }
+
+    }
+    else {
+
+      return false;
+
+    }
+
+  }
+
+
+
+
+  // ## getArray ######################################################
+  public function getArray() {
+
+    return $this->arrDate;
+
+  }
+
+
+
+
+  // ## getDateText ###################################################
+  public function getDateText() {
+
+    if( preg_match( "/^de$/i", $this->language ) ) {
+
+      return $this->arrDate['day'] . "." . $this->arrDate['month'] . "." . $this->arrDate['year'];
+
+    }
+    else {
+
+      return $this->arrDate['year'] . "-" . $this->arrDate['month'] . "-" . $this->arrDate['day'];
+
+    }
+
+  }
+
+
+
+
+  // ## getDateTimeText ###############################################
+  public function getDateTimeText() {
+
+    if( preg_match( "/^de$/i", $this->language ) ) {
+
+      return $this->arrDate['day'] . "." . $this->arrDate['month'] . "." . $this->arrDate['year'] . " " . $this->arrDate['hour']
+             . ":" . $this->arrDate['minute'] . ":" . $this->arrDate['second'];
+
+    }
+    else {
+
+      return $this->arrDate['year'] . "-" . $this->arrDate['month'] . "-" . $this->arrDate['day'] . " " . $this->arrDate['hour']
+             . ":" . $this->arrDate['minute'] . ":" . $this->arrDate['second'];
+
+    }
+
+  }
+
+
+
+
+  // ## getMySQLDate ##################################################
+  public function getMySQLDate() {
+
+    return $this->arrDate['year'] . "-" . $this->arrDate['month'] . "-" . $this->arrDate['day'];
+
+  }
+
+
+
+
+  // ## getMySQLDatetime ##############################################
+  public function getMySQLDatetime() {
+
+    return $this->arrDate['year'] . "-" . $this->arrDate['month'] . "-" . $this->arrDate['day'] . " " . $this->arrDate['hour']
+           . ":" . $this->arrDate['minute'] . ":" . $this->arrDate['second'];
+
+  }
+
+
+
+
+  // ## getWeek #######################################################
+  public function getWeek() {
+
+    return $this->arrDate['week'];
+
+  }
+
+
+
+
+  // ## fillArrDate ###################################################
+  private function fillArrDate() {
+
+    $this->arrDate['year'] = date( "Y", $this->timestamp );
+    $this->arrDate['month'] = date( "m", $this->timestamp );
+    $this->arrDate['week'] = date( "W", $this->timestamp );
+    $this->arrDate['day'] = date( "d", $this->timestamp );
+    $this->arrDate['hour'] = date( "H", $this->timestamp );
+    $this->arrDate['minute'] = date( "i", $this->timestamp );
+    $this->arrDate['second'] = date( "s", $this->timestamp );
+
+  }
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/Helper.class.php b/info.textgrid.middleware.tgauth.rbac/lib/Helper.class.php
index 8ff17a5..2ef0f54 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/Helper.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/Helper.class.php
@@ -1,9 +1,9 @@
 <?php
 // ####################################################################
-// Version: 0.6.2
+// Version: 0.6.3
 // Author: Markus Widmer
 // Created: 28.11.2006
-// Modified: 09.04.2008
+// Modified: 27.04.2008
 
 
 
@@ -37,23 +37,21 @@ class Helper implements iHelper {
 
 
 
+
   // ## isUtf8 ########################################################
   public function isUtf8( $inString ) {
 
-/*
-    return preg_match( "%^(?:"
-                       . "[\x09\x0A\x0D\x20-\x7E]"               # ASCII
-                       . " | [\xC2-\xDF][\x80-\xBF]"             # non-overlong 2-byte
-                       . " |  \xE0[\xA0-\xBF][\x80-\xBF]"        # excluding overlongs
-                       . " | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}"  # straight 3-byte
-                       . " |  \xED[\x80-\x9F][\x80-\xBF]"        # excluding surrogates
-                       . " |  \xF0[\x90-\xBF][\x80-\xBF]{2}"     # planes 1-3
-                       . " | [\xF1-\xF3][\x80-\xBF]{3}"          # planes 4-15
-                       . " |  \xF4[\x80-\x8F][\x80-\xBF]{2}"     # plane 16
-                       . " )*$%xs", $inString );
-*/
+    return (utf8_encode( utf8_decode( $inString ) ) == $inString);
+
+  }
+
+
+
 
-    return (utf8_encode( utf8_decode( $inString ) ) === $inString);
+  // ## ensureUtf8 ####################################################
+  public function ensureUtf8( $inString ) {
+
+    return ( $this->isUtf8( $inString ) ? $inString : utf8_encode( $inString ) );
 
   }
 
@@ -185,6 +183,15 @@ class Helper implements iHelper {
 
 
 
+  // ## stripQuotes ###################################################
+  public function stripQuotes( $inString, $inReplace = "" ) {
+
+    return rawurldecode( preg_replace( "/(%5C%22)|(%5C%27)/", $inReplace, rawurlencode( $inString ) ) );
+
+  }
+
+
+
 /*
   // ## generalizedtimeToTextDateTime #################################
   public function generalizedtimeToTextDateTime( $inDate, $inCountry ) {
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php b/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php
index 5522d1e..d28c17f 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/LDAP.class.php
@@ -179,12 +179,12 @@ class LDAP implements iLDAP {
 
 
   // ## getEntry ######################################################
-  public function getEntry( $inDn ) {
+  public function getEntry( $inDn, Array $inArrAttribute = null ) {
 
-    $ldapSearch = false;   // Such-Handler
-    $ldapEntries = Array();  // Unbearbeitete Ergebnisse
-    $arrResult = Array();  // Suchergebniss
-    $i = 0;                // Schleifenvariable
+    $ldapSearch = false;     // Handle
+    $ldapEntries = Array();  // Unmodified search results
+    $arrResult = Array();    // Wanted search result
+    $i = 0;                  // Loop
 
 
     // Im LDAP suchen funktioniert nur ueber eine
@@ -201,7 +201,16 @@ class LDAP implements iLDAP {
         trigger_error( "LDAP::getEntry(): Searching for: " . $inDn . "\n", E_USER_NOTICE );
 
 
-        $ldapSearch  = @ldap_read( $this->connection, $inDn, "(objectClass=*)" );
+        if( $inArrAttribute != null ) {
+
+          $ldapSearch  = @ldap_read( $this->connection, $inDn, "(objectClass=*)", $inArrAttribute );
+
+        }
+        else {
+
+          $ldapSearch  = @ldap_read( $this->connection, $inDn, "(objectClass=*)" );
+
+        }
 
 
         if( $ldapSearch ) {
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/Node.class.php b/info.textgrid.middleware.tgauth.rbac/lib/Node.class.php
index ab024c7..22b7e37 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/Node.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/Node.class.php
@@ -1,9 +1,9 @@
 <?php
 // ####################################################################
-// Version: 0.3.0
+// Version: 0.3.1
 // Autor: Markus Widmer
 // Erstellungsdatum: 11.10.2006
-// Letzte Aenderung: 15.02.2008
+// Letzte Aenderung: 12.07.2008
 
 
 
@@ -12,6 +12,8 @@ class Node implements iNode {
   // ## Klassenvariablen ##############################################
   private $value = false;
   private $name = "NODE";
+  private $namespace = "";
+  private $arrNamespaceAlias = Array();
   private $child = Array();
   private $attribute = Array();
 
@@ -33,16 +35,26 @@ class Node implements iNode {
 
 
   // ## setName #######################################################
-  public function setName( $inName ) {
+  public function setName( $inName, $inNamespace = null ) {
 
-    // Der Name darf weder ein Objekt, ein Array oder eine
-    // ausfuehrbare Funktion sein, um gespeichert zu werden.
+    // The name must not be an array or an object to be
+    // stored.
     if(    !is_object( $inName )
         && !is_array( $inName ) ) {
 
       $this->name = strtolower( $inName );
 
 
+      // If a namespace is given, store it as well
+      if(    ($inNamespace != null)
+          && !is_array( $inNamespace )
+          && !is_object( $inNamespace ) ) {
+
+        $this->namespace = $inNamespace;
+
+      }
+
+
       return true;
 
     }
@@ -150,6 +162,7 @@ class Node implements iNode {
 
 
 
+
   // ## getValue ######################################################
   public function getValue() {
 
@@ -159,6 +172,42 @@ class Node implements iNode {
 
 
 
+
+  // ## setNamespace ##################################################
+  public function setNamespace( $inNamespace ) {
+
+    if(    !is_object( $inNamespace )
+        && !is_array( $inNamespace ) ) {
+
+      $this->namespace = $inNamespace;
+
+    }
+
+  }
+
+
+
+
+  // ## getNamespace ##################################################
+  public function getNamespace() {
+
+    return $this->namespace;
+
+  }
+
+
+
+
+  // ## setNamespaceAlias #############################################
+  public function setNamespaceAlias( $inAlias, $inNamespace ) {
+
+    $this->arrNamespaceAlias[$inAlias] = $inNamespace;
+
+  }
+
+
+
+
   // ## addChild ######################################################
   public function addChild( iNode $inNode ) {
 
@@ -205,7 +254,7 @@ class Node implements iNode {
 
 
   // ## getChild ######################################################
-  public function getChild( $inName, $inNumber ) {
+  public function getChild( $inName, $inNumber, $inNamespace = null ) {
 
     // Es wird auf jeden Fall ein korrekter Knoten
     // zurueckgegeben, auch wenn keiner gefunden
@@ -214,33 +263,41 @@ class Node implements iNode {
     $wantedNode->setName( $inName );
 
 
-    // Die Suche nach dem Knoten beginnen und alle
-    // Kinderknoten ansehen.
+    // Start the search for the node by looking at every child
     $i = 0;
     $n = 0;
     $flagFound = false;
     while(    ($i < sizeof( $this->child ))
            && !$flagFound ) {
 
-      // Einen Knoten holen
+      // Get one child node
       $child = $this->child[$i];
 
 
-      // Name ist korrekt...
+      // Name is correct...
       if( preg_match( "/^" . $child->getName() . "$/i", $inName ) ) {
 
-        // Nummer ist korrekt...
-        if( $inNumber == $n ) {
+        // If a namespace is given and the node has this
+        // namespace then it is considered to be the
+        // one we are looking for. Otherwise it is ignored.
+        if(    (    $inNamespace != null
+                 && (    hash( "md5", $child->getNamespace() ) == hash( "md5", $inNamespace ) )
+                      || (    isset( $this->arrNamespaceAlias[strtolower($inNamespace)] )
+                           && hash( "md5", $child->getNamespace() ) == hash( "md5", $this->arrNamespaceAlias[strtolower($inNamespace)] ) ) )
+            || ($inNamespace == null) ) {
 
-          $flagFound = true;
-          $wantedNode = $child;
+          // Number is korrekt...
+          if( $inNumber == $n ) {
 
-        }
+            $flagFound = true;
+            $wantedNode = $child;
 
-        // Nummer ist nicht korrekt...
-        else {
+          }
+          else {
 
-          $n++;
+            $n++;
+
+          }
 
         }
 
@@ -261,7 +318,7 @@ class Node implements iNode {
 
 
   // ## searchChild ###################################################
-  public function searchChild( $inName, $inAttribute, $inRegex ) {
+  public function searchChild( $inName, $inAttribute, $inRegex, $inNamespace = null ) {
 
     $arrNode = Array();   // Der Rueckgabewert
     $child = new Node();  // Temporaerer Knoten
@@ -270,7 +327,8 @@ class Node implements iNode {
 
     for( $i = 0; $i < $this->countChilds( $inName ); $i++ ) {
 
-      $child = $this->getChild( $inName, $i );
+      $child = $this->getChild( $inName, $i, $inNamespace );
+
 
       if( preg_match( $inRegex, $child->getAttribute( $inAttribute ) ) ) {
 
@@ -289,7 +347,7 @@ class Node implements iNode {
 
 
   // ## countChilds ###################################################
-  public function countChilds( $inName ) {
+  public function countChilds( $inName, $inNamespace = null ) {
 
     $number = 0;  // Anzahl der Knoten
     $i = 0;       // Schleifenvariable
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/XML.class.php b/info.textgrid.middleware.tgauth.rbac/lib/XML.class.php
index 36ece33..95f612f 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/XML.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/XML.class.php
@@ -95,10 +95,12 @@ class XML implements iXML {
 
 
     // The data needs only to encoded if it is not
-    // already. In any case they are pared into an array.
-    // To avoid the need of the Helper class at this point,
-    // the check will be done directly!
-    if( utf8_encode( utf8_decode( $inData ) ) === $inData ) {
+    // already. In any case they are parsed into an array.
+    // The decision is made funded on the information given
+    // in the XML file itself. If no information is given,
+    // we do not encode but use the data as it is.
+    if(    (sizeof( $arrXmlHeader ) == 1)
+        && !preg_match( "/encoding\s*=\s*.?utf[-]?8/i", $arrXmlHeader[0] ) ) {
 
       xml_parse_into_struct( $parser, utf8_encode( $inData ), &$arrVal, &$index );
 
@@ -164,17 +166,23 @@ class XML implements iXML {
 
 
   // ## parseArrayToNode ##############################################
-  private function parseArrayToNode( Array $inArray, $inLevel ) {
+  private function parseArrayToNode( Array $inArray, $inLevel, $inArrNamespace = null ) {
 
     $node = new Node();       // Zum Anlegen neuer Knoten
     $arrNode = Array();       // Array der neu angelegten Knoten
     $arrAttribute = Array();  // Zwischenspeicher fuer die Attribute
+    $arrSplit = Array();
     $flagFound = false;       // Flag, das zur Suche nach dem Knotenende verwendet wird
     $i = 0;                   // Schleifenvariable
     $j = 0;                   // Schleifenvariable
     $c = 0;                   // Schleifenvariable
 
 
+    // Setting the array to be an empty array if it is
+    // not already set.
+    $inArrNamespace == null ? $inArrNamespace = Array() : false;
+
+
     $i = 0;
     while( $i < sizeof( $inArray ) ) {
 
@@ -182,7 +190,7 @@ class XML implements iXML {
           && ($inArray[$i]['level'] == $inLevel) ) {
 
         $node = new Node();
-        $node->setName( $inArray[$i]['tag'] );
+
 
         if( !isset( $inArray[$i]['value'] ) ) {
 
@@ -194,21 +202,72 @@ class XML implements iXML {
         $node->setValue( trim( $inArray[$i]['value'] ) );
 
 
-        // Noch die Attribute auslesen und speichern
+        // Every attribute except the xmlns attributes
+        // are stored as normal attributes. The xmlns
+        // is stored as special value in the node.
         if( isset( $inArray[$i]['attributes'] ) ) {
 
           $arrAttribute = $inArray[$i]['attributes'];
 
           foreach( $arrAttribute as $key => $value ) {
 
-            $node->setAttribute( strtolower( $key ), $value );
+            $arrMatch = Array();
+            if( preg_match( "/^xmlns:(.+)$/i", $key, &$arrMatch ) ) {
+
+              $inArrNamespace[$arrMatch[1]] = $value;
+
+            }
+            elseif( preg_match( "/^xmlns$/i", $key ) ) {
+
+              $inArrNamespace['defaultNamespace'] = $value;
+
+            }
+            else {
+
+              $node->setAttribute( strtolower( $key ), $value );
+
+            }
 
           }
 
         }
 
 
-        // Neuen Knoten in den Array einfuegen
+        // To open the possibility to use the alias instead of the
+        // namespace while asking a node for childs, the aliases
+        // in the XML file are passed as well to every node.
+        foreach( $inArrNamespace as $key => $value ) {
+
+          $node->setNamespaceAlias( strtolower( $key ), $value );
+
+        }
+
+
+        $arrSplit = preg_split( "/[:]/", $inArray[$i]['tag'] );
+
+        if(    (sizeof( $arrSplit ) > 1)
+            && (isset( $inArrNamespace[$arrSplit[0]] )) ) {
+
+          $node->setName( $arrSplit[1], $inArrNamespace[$arrSplit[0]] );
+
+        }
+        else {
+
+          if( isset( $inArrNamespace['defaultNamespace'] ) ) {
+
+            $node->setName( $inArray[$i]['tag'], $inArrNamespace['defaultNamespace'] );
+
+          }
+          else {
+
+            $node->setName( $inArray[$i]['tag'] );
+
+          }
+
+        }
+
+
+        // Add the new node to the array
         $arrNode[] = $node;
 
       }
@@ -237,37 +296,86 @@ class XML implements iXML {
         }
 
 
-        # Eine Ebene tiefer bearbeiten. Dazu den Array entsprechend
-        # "ausschneiden".
-        $child = $this->parseArrayToNode( array_slice( $inArray, $i + 1, $j - $i - 1 ), $inLevel + 1 );
+        # Create a new node
+        $node = new Node();
 
 
-        # Neuen Knoten erstellen und Daten hinzufuegen
-        $node = new Node();
-        $node->setName( $inArray[$i]['tag'] );
+        // Every attribute except the xmlns attributes
+        // are stored as normal attributes. The xmlns
+        // is stored as special value in the node.
+        if( isset( $inArray[$i]['attributes'] ) ) {
 
-        for( $c = 0; $c < sizeof( $child ); $c++ ) {
+          $arrAttribute = $inArray[$i]['attributes'];
 
-          $node->addChild( $child[$c] );
+          foreach( $arrAttribute as $key => $value ) {
+
+            $arrMatch = Array();
+            if( preg_match( "/^xmlns:(.+)$/i", $key, &$arrMatch ) ) {
+
+              $inArrNamespace[$arrMatch[1]] = $value;
+
+            }
+            elseif( preg_match( "/^xmlns$/i", $key ) ) {
+
+              $inArrNamespace['defaultNamespace'] = $value;
+
+            }
+            else {
+
+              $node->setAttribute( strtolower( $key ), $value );
+
+            }
+
+          }
 
         }
 
 
-        // Noch die Attribute auslesen und speichern
-        if( isset( $inArray[$i]['attributes'] ) ) {
+        // To open the possibility to use the alias instead of the
+        // namespace while asking a node for childs, the aliases
+        // in the XML file are passed as well to every node.
+        foreach( $inArrNamespace as $key => $value ) {
 
-          $arrAttribute = $inArray[$i]['attributes'];
+          $node->setNamespaceAlias( strtolower( $key ), $value );
 
-          foreach( $arrAttribute as $key => $value ) {
+        }
+
+
+        $arrSplit = preg_split( "/[:]/", $inArray[$i]['tag'] );
+
+        if(    (sizeof( $arrSplit ) > 1)
+            && (isset( $inArrNamespace[$arrSplit[0]] )) ) {
 
-            $node->setAttribute( strtolower( $key ), $value );
+          $node->setName( $arrSplit[1], $inArrNamespace[$arrSplit[0]] );
+
+        }
+        else {
+
+          if( isset( $inArrNamespace['defaultNamespace'] ) ) {
+
+            $node->setName( $inArray[$i]['tag'], $inArrNamespace['defaultNamespace'] );
 
           }
+          else {
+
+            $node->setName( $inArray[$i]['tag'] );
+
+          }
+
+        }
+
+
+        $child = $this->parseArrayToNode( array_slice( $inArray, $i + 1, $j - $i - 1 ), $inLevel + 1, $inArrNamespace );
+
+
+        for( $c = 0; $c < sizeof( $child ); $c++ ) {
+
+          $node->addChild( $child[$c] );
 
         }
 
 
-        // Neuen Knoten in den Array einfuegen
+        // Add the new node to the array
         $arrNode[] = $node;
 
       }
@@ -277,7 +385,6 @@ class XML implements iXML {
       }
 
 
-      // Erhoehen der Schleifenvariable
       $i++;
 
     }
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/iDate.interface.php b/info.textgrid.middleware.tgauth.rbac/lib/iDate.interface.php
new file mode 100755
index 0000000..8e25f35
--- /dev/null
+++ b/info.textgrid.middleware.tgauth.rbac/lib/iDate.interface.php
@@ -0,0 +1,19 @@
+<?php
+interface iDate {
+
+  public function __construct( $inTimestamp, $inLanguage = false );
+  public function parseMySQLDatetime( $inDatetime );
+  public function parseMySQLDate( $inDate );
+  public function parseGeneralizedTime( $inGeneralizedTime );
+  public function setLanguage( $inLanguage );
+  public function setTimestamp( $inTimestamp );
+  public function parseDateFirst( $inText );
+  public function getArray();
+  public function getDateText();
+  public function getDateTimeText();
+  public function getMySQLDate();
+  public function getMySQLDatetime();
+  public function getWeek();
+
+}
+?>
diff --git a/info.textgrid.middleware.tgauth.rbac/lib/iXML.interface.php b/info.textgrid.middleware.tgauth.rbac/lib/iXML.interface.php
index da0f18a..132a5d0 100755
--- a/info.textgrid.middleware.tgauth.rbac/lib/iXML.interface.php
+++ b/info.textgrid.middleware.tgauth.rbac/lib/iXML.interface.php
@@ -2,6 +2,7 @@
 interface iXML {
 
   public function parse( $inData, $inName = "default" );
+  public function parseFile( $inFilename, $inName = "default" );
   public function getRoot( $inName = "default" );
 
 }
diff --git a/info.textgrid.middleware.tgauth.rbac/rbac/RBAC.class.php b/info.textgrid.middleware.tgauth.rbac/rbac/RBAC.class.php
index f928ffe..7120a35 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbac/RBAC.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbac/RBAC.class.php
@@ -1,9 +1,9 @@
 <?php
 // ####################################################################
-// Version: 0.2.0
+// Version: 0.2.1
 // Autor: Markus Widmer
 // Erstellungsdatum: 31.10.2007
-// Letzte Aenderung: 03.11.2007
+// Letzte Aenderung: 21.06.2008
 
 
 
@@ -284,7 +284,7 @@ class RBAC {
 
       foreach( $this->arrEvent[$inForFunction][$inEvent] as $index => $eventListener ) {
 
-        $evalString = "\$newContext = \$this->arrExtension[" . $eventListener['class'] . "]->" . $eventListener['call'] . "( \$newContext );";
+        $evalString = "\$newContext = \$this->arrExtension['" . $eventListener['class'] . "']->" . $eventListener['call'] . "( \$newContext );";
         eval( $evalString );
 
 
diff --git a/info.textgrid.middleware.tgauth.rbac/rbac/RBACcore.class.php b/info.textgrid.middleware.tgauth.rbac/rbac/RBACcore.class.php
index f91433d..effadab 100755
--- a/info.textgrid.middleware.tgauth.rbac/rbac/RBACcore.class.php
+++ b/info.textgrid.middleware.tgauth.rbac/rbac/RBACcore.class.php
@@ -1,9 +1,9 @@
 <?php
 // ####################################################################
-// Version: 0.2.5
+// Version: 0.2.6
 // Author: Markus Widmer
 // Created: 31.07.2007
-// Modified: 16.05.2008
+// Modified: 09.07.2008
 
 
 // Requiring these interfaces if the RBAC-Framework
@@ -818,9 +818,6 @@ class RBACcore implements iRBACcore {
     }
 
 
-    
-
-
     if( isset( $arrRoleEntry['dn'] ) ) {
 
       $arrUser = $arrRoleEntry[$this->conf->getValue( "role", "assignedattribute" )];
@@ -1205,7 +1202,14 @@ class RBACcore implements iRBACcore {
         // through role hirarchy.
         $filter  = "(&" . $this->conf->getValue( "resource", "filter" );
         $filter .= "(|(" . $this->conf->getValue( "resource", "namingattribute" ) . "=" . $inResource . ")";
-        $filter .= "  (" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . "))(|";
+
+        if( preg_match( "/.+/", $this->conf->getValue( "resource", "aliasattribute" ) ) ) {
+
+          $filter .= "  (" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . ")";
+
+        }
+
+        $filter .= ")(|";
 
 
         for( $i = 0; $i < sizeof( $arrSessionRole ); $i++ ) {
@@ -1896,7 +1900,14 @@ class RBACcore implements iRBACcore {
     // Create a filter to get the resource
     $filter  = "(&" . $this->conf->getValue( "resource", "filter" );
     $filter .= "(|(" . $this->conf->getValue( "resource", "namingattribute" ) . "=" . $inResource . ")";
-    $filter .= "  (" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . ")))";
+
+    if( preg_match( "/.+/", $this->conf->getValue( "resource", "aliasattribute" ) ) ) {
+
+      $filter .= "  (" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . ")";
+
+    }
+
+    $filter .= "))";
 
 
     // Get the resource
@@ -1905,7 +1916,7 @@ class RBACcore implements iRBACcore {
 
 
     // Get the role
-    $arrRoleEntry = $this->conn['resource']->getEntry( $inRole );
+    $arrRoleEntry = $this->conn['role']->getEntry( $inRole );
 
 
     // The resource has to exist and has to be uniqueue
@@ -2008,7 +2019,14 @@ class RBACcore implements iRBACcore {
     // Create a filter to get the resource
     $filter  = "(&" . $this->conf->getValue( "resource", "filter" );
     $filter .= "(|(" . $this->conf->getValue( "resource", "namingattribute" ) . "=" . $inResource . ")";
-    $filter .= "(" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . ")))";
+
+    if( preg_match( "/.+/", $this->conf->getValue( "resource", "aliasattribute" ) ) ) {
+
+      $filter .= "(" . $this->conf->getValue( "resource", "aliasattribute" ) . "=" . $inResource . ")";
+
+    }
+
+    $filter .= "))";
 
 
     // Get the resource
-- 
GitLab