diff --git a/core/pom.xml b/core/pom.xml
index cc807bb..032b2b1 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -318,12 +318,6 @@
 		<!-- <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> 
 			<version>2.6.5</version> </dependency> -->
 
-		<dependency>
-			<groupId>org.apache.oltu.oauth2</groupId>
-			<artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
-			<version>1.0.0</version>
-		</dependency>
-
 		<!-- end copy -->
 
 		<dependency>
diff --git a/core/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java b/core/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
index 10556e2..4595d06 100644
--- a/core/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
+++ b/core/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
@@ -123,6 +123,7 @@
     public static final int CLIENT_AUTHENTICATION_FAILED = 1803;
     public static final int CLIENT_AUTHORIZATION_FAILED = 1804;
     public static final int CLIENT_NOT_FOUND = 1805;
+    public static final int INVALID_REDIRECT_URI = 1806;
     
     public static final int UNSUPPORTED_GRANT_TYPE = 1810;
     
diff --git a/core/src/main/java/de/ids_mannheim/korap/user/ShibUser.java b/core/src/main/java/de/ids_mannheim/korap/user/ShibUser.java
deleted file mode 100644
index d994721..0000000
--- a/core/src/main/java/de/ids_mannheim/korap/user/ShibUser.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package de.ids_mannheim.korap.user;
-
-import lombok.Data;
-
-/**
- * User: hanl
- * Date: 10/16/13
- * Time: 2:02 PM
- */
-@Data
-public class ShibUser extends User {
-
-    private String mail;
-    private String affiliation;
-    private String cn;
-
-
-    protected ShibUser () {
-        super(1);
-    }
-
-
-    private ShibUser (String eduPersonID, String mail, String cn,
-                      String affiliation) {
-        this(eduPersonID);
-        this.setUsername(eduPersonID);
-        this.mail = mail;
-        this.affiliation = affiliation;
-        this.cn = cn;
-    }
-
-
-    public ShibUser (String username) {
-        super(username, 1);
-
-    }
-
-
-    @Override
-    public String toString () {
-        final StringBuffer sb = new StringBuffer("ShibUser{");
-        sb.append(", mail='").append(mail).append('\'');
-        sb.append(", affiliation='").append(affiliation).append('\'');
-        sb.append(", cn='").append(cn).append('\'');
-        sb.append('}');
-        return sb.toString();
-    }
-
-
-    @Override
-    protected User clone () {
-        return new ShibUser(this.getUsername(), this.getMail(), this.getCn(),
-                this.getAffiliation());
-    }
-}
diff --git a/core/src/main/java/de/ids_mannheim/korap/user/User.java b/core/src/main/java/de/ids_mannheim/korap/user/User.java
index 871beb8..5decd6a 100644
--- a/core/src/main/java/de/ids_mannheim/korap/user/User.java
+++ b/core/src/main/java/de/ids_mannheim/korap/user/User.java
@@ -238,15 +238,15 @@
         }
 
 
-        public static ShibUser getShibInstance (String eduPersonID,
-                String mail, String cn) {
-            ShibUser u = new ShibUser(eduPersonID);
-            u.setAffiliation("");
-            u.setMail(mail);
-            u.setUsername(eduPersonID);
-            u.setCn(cn);
-            return u;
-        }
+//        public static ShibUser getShibInstance (String eduPersonID,
+//                String mail, String cn) {
+//            ShibUser u = new ShibUser(eduPersonID);
+//            u.setAffiliation("");
+//            u.setMail(mail);
+//            u.setUsername(eduPersonID);
+//            u.setCn(cn);
+//            return u;
+//        }
 
 
         public static KorAPUser toKorAPUser (Map<String, Object> map) {
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/utils/FormRequestWrapper.java b/core/src/main/java/de/ids_mannheim/korap/web/utils/FormRequestWrapper.java
index 4cd3ee7..12c7825 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/utils/FormRequestWrapper.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/utils/FormRequestWrapper.java
@@ -37,8 +37,9 @@
     @Override
     public String getParameter (String name) {
         String value = super.getParameter(name);
-        if (value == null)
-            value = String.valueOf(form.getFirst(name));
+        if (value == null){
+            value = form.getFirst(name);
+        }
         return value;
     }
 
diff --git a/full/Changes b/full/Changes
index 6b13254..85c1dd7 100644
--- a/full/Changes
+++ b/full/Changes
@@ -1,5 +1,5 @@
 version 0.60.2
-17/04/2018
+23/04/2018
 	- implemented OAuth2 client registration (margaretha)
 	- implemented OAuth2 client authentication (margaretha)
 	- changed virtual corpus search to retrieval (margaretha)
@@ -10,6 +10,7 @@
 	- implemented OAuth2 exception handler (margaretha)
 	- implemented OAuth2 request access token with client credentials grant (margaretha)
 	- implemented OAuth2 request access token with resource owner password grant (margaretha)
+	- implemented OAuth2 authorization code request (margaretha)
 	
 version 0.60.1
 28/03/2018
diff --git a/full/hs_err_pid31138.log b/full/hs_err_pid31138.log
new file mode 100644
index 0000000..c989a1f
--- /dev/null
+++ b/full/hs_err_pid31138.log
@@ -0,0 +1,919 @@
+#
+# There is insufficient memory for the Java Runtime Environment to continue.
+# Native memory allocation (mmap) failed to map 91226112 bytes for committing reserved memory.
+# Possible reasons:
+#   The system is out of physical RAM or swap space
+#   In 32 bit mode, the process size limit was hit
+# Possible solutions:
+#   Reduce memory load on the system
+#   Increase physical memory or swap space
+#   Check if swap backing store is full
+#   Use 64 bit Java on a 64 bit OS
+#   Decrease Java heap size (-Xmx/-Xms)
+#   Decrease number of Java threads
+#   Decrease Java thread stack sizes (-Xss)
+#   Set larger code cache with -XX:ReservedCodeCacheSize=
+# This output file may be truncated or incomplete.
+#
+#  Out of Memory Error (os_linux.cpp:2627), pid=31138, tid=0x00007f0cd38f8700
+#
+# JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode linux-amd64 compressed oops)
+# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00007f0cf0084800):  VMThread [stack: 0x00007f0cd37f8000,0x00007f0cd38f9000] [id=31151]
+
+Stack: [0x00007f0cd37f8000,0x00007f0cd38f9000],  sp=0x00007f0cd38f7020,  free space=1020k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+V  [libjvm.so+0xac6f7a]  VMError::report_and_die()+0x2ba
+V  [libjvm.so+0x4fc71b]  report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b
+V  [libjvm.so+0x923b13]  os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x103
+V  [libjvm.so+0x924069]  os::pd_commit_memory(char*, unsigned long, unsigned long, bool)+0x29
+V  [libjvm.so+0x91e37a]  os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2a
+V  [libjvm.so+0x992da3]  PSVirtualSpace::expand_by(unsigned long)+0x53
+V  [libjvm.so+0x9941a8]  PSYoungGen::resize_generation(unsigned long, unsigned long)+0xf8
+V  [libjvm.so+0x993302]  PSYoungGen::resize(unsigned long, unsigned long)+0x22
+V  [libjvm.so+0x9905db]  PSScavenge::invoke_no_policy()+0xf3b
+V  [libjvm.so+0x990d61]  PSScavenge::invoke()+0x41
+V  [libjvm.so+0x947ac0]  ParallelScavengeHeap::failed_mem_allocate(unsigned long)+0x70
+V  [libjvm.so+0xac8997]  VM_ParallelGCFailedAllocation::doit()+0x97
+V  [libjvm.so+0xad0475]  VM_Operation::evaluate()+0x55
+V  [libjvm.so+0xace84a]  VMThread::evaluate_operation(VM_Operation*)+0xba
+V  [libjvm.so+0xacebce]  VMThread::loop()+0x1ce
+V  [libjvm.so+0xacf040]  VMThread::run()+0x70
+V  [libjvm.so+0x926138]  java_start(Thread*)+0x108
+
+VM_Operation (0x00007f0cf985a7f0): ParallelGCFailedAllocation, mode: safepoint, requested by thread 0x00007f0cf0017000
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x00007f0cf2522800 JavaThread "pool-3-thread-1" [_thread_blocked, id=31264, stack(0x00007f0c940fc000,0x00007f0c941fd000)]
+  0x00007f0cf2cee800 JavaThread "pool-2-thread-1" [_thread_blocked, id=31229, stack(0x00007f0c949fd000,0x00007f0c94afe000)]
+  0x00007f0cf2c9f800 JavaThread "id_tokens.data" [_thread_blocked, id=31227, stack(0x00007f0c94afe000,0x00007f0c94bff000)]
+  0x00007f0cf2c89800 JavaThread "Statistics Thread-__DEFAULT__-1" daemon [_thread_blocked, id=31226, stack(0x00007f0cc409f000,0x00007f0cc41a0000)]
+  0x00007f0cf2c72000 JavaThread "id_tokens_inv.data" [_thread_blocked, id=31221, stack(0x00007f0cd00d1000,0x00007f0cd01d2000)]
+  0x00007f0cf2c63000 JavaThread "__DEFAULT__" daemon [_thread_blocked, id=31220, stack(0x00007f0cd0e83000,0x00007f0cd0f84000)]
+  0x00007f0cf1aeb000 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=31196, stack(0x00007f0cd06bc000,0x00007f0cd07bd000)]
+  0x00007f0cf0a32800 JavaThread "ReaderThread" [_thread_in_native, id=31177, stack(0x00007f0cd2200000,0x00007f0cd2301000)]
+  0x00007f0cf00ea800 JavaThread "Service Thread" daemon [_thread_blocked, id=31167, stack(0x00007f0cd2bea000,0x00007f0cd2ceb000)]
+  0x00007f0cf00df000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=31165, stack(0x00007f0cd2ceb000,0x00007f0cd2dec000)]
+  0x00007f0cf00dd800 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=31164, stack(0x00007f0cd2dec000,0x00007f0cd2eed000)]
+  0x00007f0cf00da800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=31163, stack(0x00007f0cd2eed000,0x00007f0cd2fee000)]
+  0x00007f0cb4001000 JavaThread "JDWP Command Reader" daemon [_thread_blocked, id=31160, stack(0x00007f0cd2fee000,0x00007f0cd30ef000)]
+  0x00007f0cf00d8800 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=31159, stack(0x00007f0cd30ef000,0x00007f0cd31f0000)]
+  0x00007f0cf00d4800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=31156, stack(0x00007f0cd31f0000,0x00007f0cd32f1000)]
+  0x00007f0cf00c3000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=31154, stack(0x00007f0cd34f5000,0x00007f0cd35f6000)]
+  0x00007f0cf0091000 JavaThread "Finalizer" daemon [_thread_blocked, id=31153, stack(0x00007f0cd35f6000,0x00007f0cd36f7000)]
+  0x00007f0cf008c800 JavaThread "Reference Handler" daemon [_thread_blocked, id=31152, stack(0x00007f0cd36f7000,0x00007f0cd37f8000)]
+  0x00007f0cf0017000 JavaThread "main" [_thread_blocked, id=31146, stack(0x00007f0cf9760000,0x00007f0cf9861000)]
+
+Other Threads:
+=>0x00007f0cf0084800 VMThread [stack: 0x00007f0cd37f8000,0x00007f0cd38f9000] [id=31151]
+  0x00007f0cf00ee000 WatcherThread [stack: 0x00007f0cd2ae9000,0x00007f0cd2bea000] [id=31168]
+
+VM state:at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
+[0x00007f0cf00130a0] Threads_lock - owner thread: 0x00007f0cf0084800
+[0x00007f0cf00135a0] Heap_lock - owner thread: 0x00007f0cf0017000
+
+Heap:
+ PSYoungGen      total 324608K, used 11247K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 313344K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000780380000)
+  from space 11264K, 99% used [0x0000000781880000,0x000000078237be48,0x0000000782380000)
+  to   space 10240K, 0% used [0x0000000782480000,0x0000000782480000,0x0000000782e80000)
+ ParOldGen       total 140800K, used 20496K [0x00000006c7400000, 0x00000006cfd80000, 0x000000076d180000)
+  object space 140800K, 14% used [0x00000006c7400000,0x00000006c88042d8,0x00000006cfd80000)
+ Metaspace       used 48837K, capacity 49506K, committed 49792K, reserved 1093632K
+  class space    used 6068K, capacity 6238K, committed 6272K, reserved 1048576K
+
+Card table byte_map: [0x00007f0cf54ad000,0x00007f0cf5c74000] byte_map_base: 0x00007f0cf1e73000
+
+Marking Bits: (ParMarkBitMap*) 0x00007f0cf8c32c80
+ Begin Bits: [0x00007f0cc43a0000, 0x00007f0cc81d0000)
+ End Bits:   [0x00007f0cc81d0000, 0x00007f0ccc000000)
+
+Polling page: 0x00007f0cf9885000
+
+CodeCache: size=245760Kb used=16772Kb max_used=16772Kb free=228987Kb
+ bounds [0x00007f0ce1000000, 0x00007f0ce2070000, 0x00007f0cf0000000]
+ total_blobs=5214 nmethods=4705 adapters=429
+ compilation: enabled
+
+Compilation events (10 events):
+Event: 11,826 Thread 0x00007f0cf00df000 5245       2       org.terracotta.context.extractor.ObjectContextExtractor::extractInstanceAttribute (40 bytes)
+Event: 11,826 Thread 0x00007f0cf00df000 nmethod 5245 0x00007f0ce206b650 code [0x00007f0ce206b840, 0x00007f0ce206be68]
+Event: 11,827 Thread 0x00007f0cf00df000 5246       2       org.terracotta.context.extractor.LazyContextElement::<init> (22 bytes)
+Event: 11,827 Thread 0x00007f0cf00df000 nmethod 5246 0x00007f0ce206c350 code [0x00007f0ce206c4c0, 0x00007f0ce206c708]
+Event: 11,827 Thread 0x00007f0cf00df000 5247       2       org.terracotta.statistics.StatisticsManager$1::contextCreated (5 bytes)
+Event: 11,827 Thread 0x00007f0cf00df000 nmethod 5247 0x00007f0ce206c810 code [0x00007f0ce206c980, 0x00007f0ce206cb08]
+Event: 11,835 Thread 0x00007f0cf00df000 5248   !   2       sun.reflect.GeneratedMethodAccessor6::invoke (63 bytes)
+Event: 11,836 Thread 0x00007f0cf00df000 nmethod 5248 0x00007f0ce206cbd0 code [0x00007f0ce206cdc0, 0x00007f0ce206d2d8]
+Event: 11,849 Thread 0x00007f0cf00df000 5249       2       org.springframework.beans.factory.support.AbstractBeanFactory::getBean (9 bytes)
+Event: 11,850 Thread 0x00007f0cf00df000 nmethod 5249 0x00007f0ce206d710 code [0x00007f0ce206d880, 0x00007f0ce206da28]
+
+GC Heap History (10 events):
+Event: 3,746 GC heap after
+Heap after GC invocations=6 (full 1):
+ PSYoungGen      total 139264K, used 6268K [0x000000076d180000, 0x000000077a800000, 0x00000007c0000000)
+  eden space 129024K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000774f80000)
+  from space 10240K, 61% used [0x0000000774f80000,0x000000077559f090,0x0000000775980000)
+  to   space 9216K, 0% used [0x0000000779f00000,0x0000000779f00000,0x000000077a800000)
+ ParOldGen       total 99328K, used 7934K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 7% used [0x00000006c7400000,0x00000006c7bbf858,0x00000006cd500000)
+ Metaspace       used 25855K, capacity 26242K, committed 26624K, reserved 1073152K
+  class space    used 3109K, capacity 3220K, committed 3328K, reserved 1048576K
+}
+Event: 4,837 GC heap before
+{Heap before GC invocations=7 (full 1):
+ PSYoungGen      total 139264K, used 135292K [0x000000076d180000, 0x000000077a800000, 0x00000007c0000000)
+  eden space 129024K, 100% used [0x000000076d180000,0x0000000774f80000,0x0000000774f80000)
+  from space 10240K, 61% used [0x0000000774f80000,0x000000077559f090,0x0000000775980000)
+  to   space 9216K, 0% used [0x0000000779f00000,0x0000000779f00000,0x000000077a800000)
+ ParOldGen       total 99328K, used 7934K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 7% used [0x00000006c7400000,0x00000006c7bbf858,0x00000006cd500000)
+ Metaspace       used 32832K, capacity 33212K, committed 33536K, reserved 1079296K
+  class space    used 4151K, capacity 4261K, committed 4352K, reserved 1048576K
+Event: 4,851 GC heap after
+Heap after GC invocations=7 (full 1):
+ PSYoungGen      total 208384K, used 8882K [0x000000076d180000, 0x000000077a800000, 0x00000007c0000000)
+  eden space 199168K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000779400000)
+  from space 9216K, 96% used [0x0000000779f00000,0x000000077a7aca40,0x000000077a800000)
+  to   space 10240K, 0% used [0x0000000779400000,0x0000000779400000,0x0000000779e00000)
+ ParOldGen       total 99328K, used 7942K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 7% used [0x00000006c7400000,0x00000006c7bc1858,0x00000006cd500000)
+ Metaspace       used 32832K, capacity 33212K, committed 33536K, reserved 1079296K
+  class space    used 4151K, capacity 4261K, committed 4352K, reserved 1048576K
+}
+Event: 5,331 GC heap before
+{Heap before GC invocations=8 (full 1):
+ PSYoungGen      total 208384K, used 59835K [0x000000076d180000, 0x000000077a800000, 0x00000007c0000000)
+  eden space 199168K, 25% used [0x000000076d180000,0x0000000770342228,0x0000000779400000)
+  from space 9216K, 96% used [0x0000000779f00000,0x000000077a7aca40,0x000000077a800000)
+  to   space 10240K, 0% used [0x0000000779400000,0x0000000779400000,0x0000000779e00000)
+ ParOldGen       total 99328K, used 7942K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 7% used [0x00000006c7400000,0x00000006c7bc1858,0x00000006cd500000)
+ Metaspace       used 34813K, capacity 35202K, committed 35496K, reserved 1081344K
+  class space    used 4420K, capacity 4518K, committed 4608K, reserved 1048576K
+Event: 5,367 GC heap after
+Heap after GC invocations=8 (full 1):
+ PSYoungGen      total 209408K, used 6042K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 199168K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000779400000)
+  from space 10240K, 59% used [0x0000000779400000,0x00000007799e69c0,0x0000000779e00000)
+  to   space 10240K, 0% used [0x0000000782480000,0x0000000782480000,0x0000000782e80000)
+ ParOldGen       total 99328K, used 7950K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 8% used [0x00000006c7400000,0x00000006c7bc3858,0x00000006cd500000)
+ Metaspace       used 34813K, capacity 35202K, committed 35496K, reserved 1081344K
+  class space    used 4420K, capacity 4518K, committed 4608K, reserved 1048576K
+}
+Event: 5,368 GC heap before
+{Heap before GC invocations=9 (full 2):
+ PSYoungGen      total 209408K, used 6042K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 199168K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000779400000)
+  from space 10240K, 59% used [0x0000000779400000,0x00000007799e69c0,0x0000000779e00000)
+  to   space 10240K, 0% used [0x0000000782480000,0x0000000782480000,0x0000000782e80000)
+ ParOldGen       total 99328K, used 7950K [0x00000006c7400000, 0x00000006cd500000, 0x000000076d180000)
+  object space 99328K, 8% used [0x00000006c7400000,0x00000006c7bc3858,0x00000006cd500000)
+ Metaspace       used 34813K, capacity 35202K, committed 35496K, reserved 1081344K
+  class space    used 4420K, capacity 4518K, committed 4608K, reserved 1048576K
+Event: 5,431 GC heap after
+Heap after GC invocations=9 (full 2):
+ PSYoungGen      total 209408K, used 0K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 199168K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000779400000)
+  from space 10240K, 0% used [0x0000000779400000,0x0000000779400000,0x0000000779e00000)
+  to   space 10240K, 0% used [0x0000000782480000,0x0000000782480000,0x0000000782e80000)
+ ParOldGen       total 140800K, used 12864K [0x00000006c7400000, 0x00000006cfd80000, 0x000000076d180000)
+  object space 140800K, 9% used [0x00000006c7400000,0x00000006c80900b8,0x00000006cfd80000)
+ Metaspace       used 34813K, capacity 35202K, committed 35496K, reserved 1081344K
+  class space    used 4420K, capacity 4518K, committed 4608K, reserved 1048576K
+}
+Event: 8,014 GC heap before
+{Heap before GC invocations=10 (full 2):
+ PSYoungGen      total 209408K, used 199168K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 199168K, 100% used [0x000000076d180000,0x0000000779400000,0x0000000779400000)
+  from space 10240K, 0% used [0x0000000779400000,0x0000000779400000,0x0000000779e00000)
+  to   space 10240K, 0% used [0x0000000782480000,0x0000000782480000,0x0000000782e80000)
+ ParOldGen       total 140800K, used 12864K [0x00000006c7400000, 0x00000006cfd80000, 0x000000076d180000)
+  object space 140800K, 9% used [0x00000006c7400000,0x00000006c80900b8,0x00000006cfd80000)
+ Metaspace       used 42274K, capacity 42808K, committed 43264K, reserved 1087488K
+  class space    used 5372K, capacity 5515K, committed 5632K, reserved 1048576K
+Event: 8,055 GC heap after
+Heap after GC invocations=10 (full 2):
+ PSYoungGen      total 323584K, used 10221K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 313344K, 0% used [0x000000076d180000,0x000000076d180000,0x0000000780380000)
+  from space 10240K, 99% used [0x0000000782480000,0x0000000782e7b728,0x0000000782e80000)
+  to   space 11264K, 0% used [0x0000000781880000,0x0000000781880000,0x0000000782380000)
+ ParOldGen       total 140800K, used 13343K [0x00000006c7400000, 0x00000006cfd80000, 0x000000076d180000)
+  object space 140800K, 9% used [0x00000006c7400000,0x00000006c8107da8,0x00000006cfd80000)
+ Metaspace       used 42274K, capacity 42808K, committed 43264K, reserved 1087488K
+  class space    used 5372K, capacity 5515K, committed 5632K, reserved 1048576K
+}
+Event: 11,876 GC heap before
+{Heap before GC invocations=11 (full 2):
+ PSYoungGen      total 323584K, used 323565K [0x000000076d180000, 0x0000000782e80000, 0x00000007c0000000)
+  eden space 313344K, 100% used [0x000000076d180000,0x0000000780380000,0x0000000780380000)
+  from space 10240K, 99% used [0x0000000782480000,0x0000000782e7b728,0x0000000782e80000)
+  to   space 11264K, 0% used [0x0000000781880000,0x0000000781880000,0x0000000782380000)
+ ParOldGen       total 140800K, used 13343K [0x00000006c7400000, 0x00000006cfd80000, 0x000000076d180000)
+  object space 140800K, 9% used [0x00000006c7400000,0x00000006c8107da8,0x00000006cfd80000)
+ Metaspace       used 48837K, capacity 49506K, committed 49792K, reserved 1093632K
+  class space    used 6068K, capacity 6238K, committed 6272K, reserved 1048576K
+
+Deoptimization events (10 events):
+Event: 11,846 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,846 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,847 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,847 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,848 Thread 0x00007f0cf0017000 Uncommon trap: reason=range_check action=none pc=0x00007f0ce12e4f6c method=sun.reflect.generics.parser.SignatureParser.current()C @ 34
+Event: 11,862 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,863 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,863 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,864 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+Event: 11,864 Thread 0x00007f0cf0017000 Uncommon trap: reason=unhandled action=none pc=0x00007f0ce198005c method=java.net.URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class; @ 44
+
+Internal exceptions (10 events):
+Event: 11,816 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 39> (0x0000000780154818) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,817 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 38> (0x00000007801627f0) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,823 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 282> (0x00000007801d5e50) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,839 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ClassNotFoundException': de/ids_mannheim/korap/interfaces/AuthenticationIfaceCustomizer> (0x0000000780276238) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/classfile/systemDictionary.cpp, li
+Event: 11,839 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 141> (0x00000007802798f0) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,842 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 141> (0x000000078029b058) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,842 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 141> (0x000000078029dab0) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,847 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ClassNotFoundException': de/ids_mannheim/korap/interfaces/AuthenticationIfaceCustomizer> (0x00000007802fb7c8) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/classfile/systemDictionary.cpp, li
+Event: 11,848 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 141> (0x00000007803135f0) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp, line 366]
+Event: 11,864 Thread 0x00007f0cf0017000 Exception <a 'java/lang/ClassNotFoundException': de/ids_mannheim/korap/interfaces/AuthenticationIfaceCustomizer> (0x00000007803783d0) thrown at [/HUDSON3/workspace/8-2-build-linux-amd64/jdk8u112/7884/hotspot/src/share/vm/classfile/systemDictionary.cpp, li
+
+Events (10 events):
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT UNPACKING pc=0x00007f0ce1047633 sp=0x00007f0cf985a2a0 mode 1
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT PACKING pc=0x00007f0ce13166cc sp=0x00007f0cf985ad10
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT UNPACKING pc=0x00007f0ce1047633 sp=0x00007f0cf985aa90 mode 1
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT PACKING pc=0x00007f0ce1936ee4 sp=0x00007f0cf985adb0
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT UNPACKING pc=0x00007f0ce1047633 sp=0x00007f0cf985abd8 mode 1
+Event: 11,864 loading class de/ids_mannheim/korap/interfaces/AuthenticationIfaceCustomizer
+Event: 11,864 loading class de/ids_mannheim/korap/interfaces/AuthenticationIfaceCustomizer done
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT PACKING pc=0x00007f0ce1451e5c sp=0x00007f0cf985adf0
+Event: 11,864 Thread 0x00007f0cf0017000 DEOPT UNPACKING pc=0x00007f0ce1047633 sp=0x00007f0cf985ab68 mode 1
+Event: 11,868 Executing VM operation: ParallelGCFailedAllocation
+
+
+Dynamic libraries:
+00400000-00401000 r-xp 00000000 08:06 6952826                            /usr/local/java/jdk1.8.0_112/bin/java
+00600000-00601000 rw-p 00000000 08:06 6952826                            /usr/local/java/jdk1.8.0_112/bin/java
+01119000-0113a000 rw-p 00000000 00:00 0                                  [heap]
+6c7400000-6cfd80000 rw-p 00000000 00:00 0 
+6cfd80000-76d180000 ---p 00000000 00:00 0 
+76d180000-782e80000 rw-p 00000000 00:00 0 
+788580000-7c0000000 ---p 00000000 00:00 0 
+7c0000000-7c0620000 rw-p 00000000 00:00 0 
+7c0620000-800000000 ---p 00000000 00:00 0 
+7f0c64000000-7f0c64021000 rw-p 00000000 00:00 0 
+7f0c64021000-7f0c68000000 ---p 00000000 00:00 0 
+7f0c6c000000-7f0c6d36b000 rw-p 00000000 00:00 0 
+7f0c6d36b000-7f0c70000000 ---p 00000000 00:00 0 
+7f0c7390a000-7f0c74000000 rw-p 00000000 00:00 0 
+7f0c74000000-7f0c74021000 rw-p 00000000 00:00 0 
+7f0c74021000-7f0c78000000 ---p 00000000 00:00 0 
+7f0c78000000-7f0c78021000 rw-p 00000000 00:00 0 
+7f0c78021000-7f0c7c000000 ---p 00000000 00:00 0 
+7f0c7c000000-7f0c7c021000 rw-p 00000000 00:00 0 
+7f0c7c021000-7f0c80000000 ---p 00000000 00:00 0 
+7f0c80000000-7f0c80021000 rw-p 00000000 00:00 0 
+7f0c80021000-7f0c84000000 ---p 00000000 00:00 0 
+7f0c84000000-7f0c84021000 rw-p 00000000 00:00 0 
+7f0c84021000-7f0c88000000 ---p 00000000 00:00 0 
+7f0c88000000-7f0c88021000 rw-p 00000000 00:00 0 
+7f0c88021000-7f0c8c000000 ---p 00000000 00:00 0 
+7f0c8c000000-7f0c8c021000 rw-p 00000000 00:00 0 
+7f0c8c021000-7f0c90000000 ---p 00000000 00:00 0 
+7f0c90000000-7f0c90021000 rw-p 00000000 00:00 0 
+7f0c90021000-7f0c94000000 ---p 00000000 00:00 0 
+7f0c940fc000-7f0c940ff000 ---p 00000000 00:00 0 
+7f0c940ff000-7f0c9427d000 rw-p 00000000 00:00 0 
+7f0c9427d000-7f0c943fd000 ---p 00000000 00:00 0 
+7f0c943fd000-7f0c945fd000 rw-p 00000000 00:00 0 
+7f0c945fd000-7f0c947fd000 rw-p 00000000 00:00 0 
+7f0c947fd000-7f0c949fd000 rw-p 00000000 00:00 0 
+7f0c949fd000-7f0c94a00000 ---p 00000000 00:00 0 
+7f0c94a00000-7f0c94afe000 rw-p 00000000 00:00 0 
+7f0c94afe000-7f0c94b01000 ---p 00000000 00:00 0 
+7f0c94b01000-7f0c94dff000 rw-p 00000000 00:00 0 
+7f0c94dff000-7f0c94fff000 rw-p 00000000 00:00 0 
+7f0c94fff000-7f0c98000000 rw-p 00000000 00:00 0 
+7f0c98000000-7f0c996c5000 rw-p 00000000 00:00 0 
+7f0c996c5000-7f0c9c000000 ---p 00000000 00:00 0 
+7f0c9c000000-7f0c9c021000 rw-p 00000000 00:00 0 
+7f0c9c021000-7f0ca0000000 ---p 00000000 00:00 0 
+7f0ca0000000-7f0ca3e49000 rw-p 00000000 00:00 0 
+7f0ca3e49000-7f0ca4000000 ---p 00000000 00:00 0 
+7f0ca4000000-7f0ca7ffc000 rw-p 00000000 00:00 0 
+7f0ca7ffc000-7f0ca8000000 ---p 00000000 00:00 0 
+7f0ca8000000-7f0ca8021000 rw-p 00000000 00:00 0 
+7f0ca8021000-7f0cac000000 ---p 00000000 00:00 0 
+7f0cac000000-7f0cac021000 rw-p 00000000 00:00 0 
+7f0cac021000-7f0cb0000000 ---p 00000000 00:00 0 
+7f0cb0000000-7f0cb0021000 rw-p 00000000 00:00 0 
+7f0cb0021000-7f0cb4000000 ---p 00000000 00:00 0 
+7f0cb4000000-7f0cb4021000 rw-p 00000000 00:00 0 
+7f0cb4021000-7f0cb8000000 ---p 00000000 00:00 0 
+7f0cb8000000-7f0cb8021000 rw-p 00000000 00:00 0 
+7f0cb8021000-7f0cbc000000 ---p 00000000 00:00 0 
+7f0cbc000000-7f0cbc021000 rw-p 00000000 00:00 0 
+7f0cbc021000-7f0cc0000000 ---p 00000000 00:00 0 
+7f0cc0000000-7f0cc02f1000 rw-p 00000000 00:00 0 
+7f0cc02f1000-7f0cc4000000 ---p 00000000 00:00 0 
+7f0cc409f000-7f0cc40a2000 ---p 00000000 00:00 0 
+7f0cc40a2000-7f0cc43a0000 rw-p 00000000 00:00 0 
+7f0cc43a0000-7f0ccc000000 rw-p 00000000 00:00 0 
+7f0ccc000000-7f0ccc021000 rw-p 00000000 00:00 0 
+7f0ccc021000-7f0cd0000000 ---p 00000000 00:00 0 
+7f0cd00d1000-7f0cd00d4000 ---p 00000000 00:00 0 
+7f0cd00d4000-7f0cd03d2000 rw-p 00000000 00:00 0 
+7f0cd03d2000-7f0cd04b7000 r-xp 00000000 08:06 8127346                    /tmp/sqlite-3.21.0-a3330d00-6c5e-45c0-9946-d79b9e83fefc-libsqlitejdbc.so
+7f0cd04b7000-7f0cd06b6000 ---p 000e5000 08:06 8127346                    /tmp/sqlite-3.21.0-a3330d00-6c5e-45c0-9946-d79b9e83fefc-libsqlitejdbc.so
+7f0cd06b6000-7f0cd06bb000 rw-p 000e4000 08:06 8127346                    /tmp/sqlite-3.21.0-a3330d00-6c5e-45c0-9946-d79b9e83fefc-libsqlitejdbc.so
+7f0cd06bb000-7f0cd06bc000 rw-p 00000000 00:00 0 
+7f0cd06bc000-7f0cd06bf000 ---p 00000000 00:00 0 
+7f0cd06bf000-7f0cd09bd000 rw-p 00000000 00:00 0 
+7f0cd09bd000-7f0cd0bbd000 rw-p 00000000 00:00 0 
+7f0cd0bbd000-7f0cd0dbd000 rw-p 00000000 00:00 0 
+7f0cd0e83000-7f0cd0e86000 ---p 00000000 00:00 0 
+7f0cd0e86000-7f0cd1184000 rw-p 00000000 00:00 0 
+7f0cd1184000-7f0cd1384000 rw-p 00000000 00:00 0 
+7f0cd138d000-7f0cd1392000 r--s 00098000 08:06 7223515                    /usr/local/java/jdk1.8.0_112/jre/lib/jsse.jar
+7f0cd1392000-7f0cd1592000 rw-p 00000000 00:00 0 
+7f0cd1592000-7f0cd15a5000 r--s 00345000 08:06 7223540                    /usr/local/java/jdk1.8.0_112/jre/lib/resources.jar
+7f0cd15a5000-7f0cd17a5000 rw-p 00000000 00:00 0 
+7f0cd17a5000-7f0cd17af000 r--s 00116000 08:06 9177035                    /usr/local/java/jdk1.8.0_112/jre/lib/ext/localedata.jar
+7f0cd17af000-7f0cd17cb000 r--s 00393000 08:06 9177038                    /usr/local/java/jdk1.8.0_112/jre/lib/ext/cldrdata.jar
+7f0cd17cb000-7f0cd19cb000 rw-p 00000000 00:00 0 
+7f0cd19cb000-7f0cd1bcb000 rw-p 00000000 00:00 0 
+7f0cd1bcb000-7f0cd1bdc000 r-xp 00000000 08:06 9176986                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnio.so
+7f0cd1bdc000-7f0cd1ddb000 ---p 00011000 08:06 9176986                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnio.so
+7f0cd1ddb000-7f0cd1ddc000 rw-p 00010000 08:06 9176986                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnio.so
+7f0cd1ddc000-7f0cd1fdc000 rw-p 00000000 00:00 0 
+7f0cd1fdc000-7f0cd1ff7000 r--s 001d3000 08:06 9177034                    /usr/local/java/jdk1.8.0_112/jre/lib/ext/nashorn.jar
+7f0cd1ff7000-7f0cd2000000 r-xp 00000000 08:06 9176997                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libmanagement.so
+7f0cd2000000-7f0cd21ff000 ---p 00009000 08:06 9176997                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libmanagement.so
+7f0cd21ff000-7f0cd2200000 rw-p 00008000 08:06 9176997                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libmanagement.so
+7f0cd2200000-7f0cd2203000 ---p 00000000 00:00 0 
+7f0cd2203000-7f0cd2301000 rw-p 00000000 00:00 0 
+7f0cd2301000-7f0cd2317000 r-xp 00000000 08:06 9176961                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnet.so
+7f0cd2317000-7f0cd2517000 ---p 00016000 08:06 9176961                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnet.so
+7f0cd2517000-7f0cd2518000 rw-p 00016000 08:06 9176961                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnet.so
+7f0cd2518000-7f0cd2519000 r--s 0000f000 08:06 4719416                    /home/elma/.m2/repository/org/json/json/20131018/json-20131018.jar
+7f0cd2519000-7f0cd251b000 r--s 0000b000 08:06 4719413                    /home/elma/.m2/repository/org/apache/oltu/oauth2/org.apache.oltu.oauth2.common/1.0.0/org.apache.oltu.oauth2.common-1.0.0.jar
+7f0cd251b000-7f0cd251d000 r--s 00006000 08:06 4719411                    /home/elma/.m2/repository/org/apache/oltu/oauth2/org.apache.oltu.oauth2.authzserver/1.0.0/org.apache.oltu.oauth2.authzserver-1.0.0.jar
+7f0cd251d000-7f0cd2526000 r--s 0004d000 08:06 4718941                    /home/elma/.m2/repository/org/flywaydb/flyway-core/4.0/flyway-core-4.0.jar
+7f0cd2526000-7f0cd252a000 r--s 00016000 08:06 4718939                    /home/elma/.m2/repository/javax/servlet/javax.servlet-api/4.0.0/javax.servlet-api-4.0.0.jar
+7f0cd252a000-7f0cd252c000 r--s 0000f000 08:06 4718935                    /home/elma/.m2/repository/javax/activation/activation/1.1.1/activation-1.1.1.jar
+7f0cd252c000-7f0cd2535000 r--s 00097000 08:06 4718930                    /home/elma/.m2/repository/com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar
+7f0cd2535000-7f0cd253d000 r--s 0005f000 08:06 4718923                    /home/elma/.m2/repository/org/apache/velocity/velocity/1.6.2/velocity-1.6.2.jar
+7f0cd253d000-7f0cd2540000 r--s 0001b000 08:06 4718913                    /home/elma/.m2/repository/org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar
+7f0cd2540000-7f0cd2545000 r--s 00039000 08:06 4718911                    /home/elma/.m2/repository/org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar
+7f0cd2545000-7f0cd254b000 r--s 0004b000 08:06 4459092                    /home/elma/.m2/repository/org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar
+7f0cd254b000-7f0cd254d000 r--s 00005000 08:06 4459073                    /home/elma/.m2/repository/sslext/sslext/1.2-0/sslext-1.2-0.jar
+7f0cd254d000-7f0cd254f000 r--s 0000e000 08:06 4458968                    /home/elma/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
+7f0cd254f000-7f0cd2550000 r--s 0000c000 08:06 4458387                    /home/elma/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar
+7f0cd2550000-7f0cd2552000 r--s 00014000 08:06 4458235                    /home/elma/.m2/repository/commons-chain/commons-chain/1.1/commons-chain-1.1.jar
+7f0cd2552000-7f0cd2556000 r--s 00020000 08:06 4458231                    /home/elma/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar
+7f0cd2556000-7f0cd255b000 r--s 0002a000 08:06 4458224                    /home/elma/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
+7f0cd255b000-7f0cd2561000 r--s 0004f000 08:06 4458222                    /home/elma/.m2/repository/org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar
+7f0cd2561000-7f0cd2563000 r--s 00009000 08:06 4458217                    /home/elma/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar
+7f0cd2563000-7f0cd256b000 r--s 0006e000 08:06 4458215                    /home/elma/.m2/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar
+7f0cd256b000-7f0cd2574000 r--s 00061000 08:06 4458210                    /home/elma/.m2/repository/org/apache/velocity/velocity-engine-core/2.0/velocity-engine-core-2.0.jar
+7f0cd2574000-7f0cd257f000 r--s 00053000 08:06 4458204                    /home/elma/.m2/repository/org/springframework/security/spring-security-web/4.2.3.RELEASE/spring-security-web-4.2.3.RELEASE.jar
+7f0cd257f000-7f0cd2584000 r--s 0003c000 08:06 4458199                    /home/elma/.m2/repository/org/springframework/spring-expression/4.3.9.RELEASE/spring-expression-4.3.9.RELEASE.jar
+7f0cd2584000-7f0cd2586000 r--s 00000000 08:06 4458183                    /home/elma/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
+7f0cd2586000-7f0cd2592000 r--s 00056000 08:06 4458180                    /home/elma/.m2/repository/org/springframework/security/spring-security-core/4.2.3.RELEASE/spring-security-core-4.2.3.RELEASE.jar
+7f0cd2592000-7f0cd2599000 r--s 00036000 08:06 4458176                    /home/elma/.m2/repository/org/springframework/spring-tx/5.0.3.RELEASE/spring-tx-5.0.3.RELEASE.jar
+7f0cd2599000-7f0cd25a5000 r--s 00094000 08:06 4458170                    /home/elma/.m2/repository/org/springframework/spring-beans/5.0.3.RELEASE/spring-beans-5.0.3.RELEASE.jar
+7f0cd25a5000-7f0cd25ae000 r--s 00057000 08:06 4458168                    /home/elma/.m2/repository/org/springframework/spring-jdbc/5.0.3.RELEASE/spring-jdbc-5.0.3.RELEASE.jar
+7f0cd25ae000-7f0cd25b8000 r--s 00061000 08:06 4458162                    /home/elma/.m2/repository/com/sun/jersey/jersey-core/1.19.4/jersey-core-1.19.4.jar
+7f0cd25b8000-7f0cd25b9000 r--s 00006000 08:06 4458159                    /home/elma/.m2/repository/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar
+7f0cd25b9000-7f0cd25ba000 r--s 00004000 08:06 4458157                    /home/elma/.m2/repository/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar
+7f0cd25ba000-7f0cd25c8000 r--s 000ad000 08:06 4458156                    /home/elma/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar
+7f0cd25c8000-7f0cd25cc000 r--s 00034000 08:06 4458151                    /home/elma/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar
+7f0cd25cc000-7f0cd25ce000 r--s 00004000 08:06 4458149                    /home/elma/.m2/repository/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar
+7f0cd25ce000-7f0cd25d1000 r--s 00017000 08:06 4458148                    /home/elma/.m2/repository/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2.jar
+7f0cd25d1000-7f0cd25e4000 r--s 000c7000 08:06 4458146                    /home/elma/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.3-1/jaxb-impl-2.2.3-1.jar
+7f0cd25e4000-7f0cd25e6000 r--s 0000f000 08:06 4458142                    /home/elma/.m2/repository/org/codehaus/jettison/jettison/1.1/jettison-1.1.jar
+7f0cd25e6000-7f0cd25ea000 r--s 00025000 08:06 4458138                    /home/elma/.m2/repository/com/sun/jersey/jersey-json/1.19.4/jersey-json-1.19.4.jar
+7f0cd25ea000-7f0cd25ec000 r--s 00003000 08:06 4458137                    /home/elma/.m2/repository/com/sun/jersey/jersey-grizzly/1.19.4/jersey-grizzly-1.19.4.jar
+7f0cd25ec000-7f0cd25ee000 r--s 00018000 08:06 4458134                    /home/elma/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
+7f0cd25ee000-7f0cd25f1000 r--s 00010000 08:06 4458132                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-http-servlet/1.9.45/grizzly-http-servlet-1.9.45.jar
+7f0cd25f1000-7f0cd25f3000 r--s 0000c000 08:06 4458130                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-lzma/1.9.45/grizzly-lzma-1.9.45.jar
+7f0cd25f3000-7f0cd25fb000 r--s 00075000 08:06 4458129                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-utils/1.9.45/grizzly-utils-1.9.45.jar
+7f0cd25fb000-7f0cd25fc000 r--s 00004000 08:06 4458126                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-portunif/1.9.45/grizzly-portunif-1.9.45.jar
+7f0cd25fc000-7f0cd25fd000 r--s 00002000 08:06 4458123                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-rcm/1.9.45/grizzly-rcm-1.9.45.jar
+7f0cd25fd000-7f0cd2602000 r--s 00037000 08:06 4458121                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-framework/1.9.45/grizzly-framework-1.9.45.jar
+7f0cd2602000-7f0cd2605000 r--s 0002b000 08:06 4458119                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-http/1.9.45/grizzly-http-1.9.45.jar
+7f0cd2605000-7f0cd2618000 r--s 0010a000 08:06 4458117                    /home/elma/.m2/repository/com/sun/grizzly/grizzly-servlet-webserver/1.9.45/grizzly-servlet-webserver-1.9.45.jar
+7f0cd2618000-7f0cd261a000 r--s 00002000 08:06 4458115                    /home/elma/.m2/repository/com/sun/jersey/jersey-test-framework/jersey-test-framework-grizzly/1.19.4/jersey-test-framework-grizzly-1.19.4.jar
+7f0cd261a000-7f0cd261d000 r--s 0001e000 08:06 4458114                    /home/elma/.m2/repository/com/sun/jersey/jersey-client/1.19.4/jersey-client-1.19.4.jar
+7f0cd261d000-7f0cd2621000 r--s 0001c000 08:06 4458109                    /home/elma/.m2/repository/com/sun/jersey/jersey-servlet/1.19.4/jersey-servlet-1.19.4.jar
+7f0cd2621000-7f0cd2623000 r--s 00006000 08:06 4458104                    /home/elma/.m2/repository/com/sun/jersey/jersey-test-framework/jersey-test-framework-core/1.19.4/jersey-test-framework-core-1.19.4.jar
+7f0cd2623000-7f0cd263a000 r--s 001d2000 08:06 4458102                    /home/elma/.m2/repository/mysql/mysql-connector-java/6.0.6/mysql-connector-java-6.0.6.jar
+7f0cd263a000-7f0cd2644000 r--s 000ab000 08:06 4458100                    /home/elma/.m2/repository/org/javassist/javassist/3.22.0-GA/javassist-3.22.0-GA.jar
+7f0cd2644000-7f0cd2646000 r--s 00006000 08:06 4458098                    /home/elma/.m2/repository/org/hibernate/hibernate-java8/5.1.11.Final/hibernate-java8-5.1.11.Final.jar
+7f0cd2646000-7f0cd264a000 r--s 00028000 08:06 4458095                    /home/elma/.m2/repository/org/hibernate/hibernate-jpamodelgen/5.1.11.Final/hibernate-jpamodelgen-5.1.11.Final.jar
+7f0cd264a000-7f0cd264b000 r--s 00003000 08:06 4458093                    /home/elma/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1.1/geronimo-jta_1.1_spec-1.1.1.jar
+7f0cd264b000-7f0cd2650000 r--s 00017000 08:06 4458092                    /home/elma/.m2/repository/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar
+7f0cd2650000-7f0cd2653000 r--s 00010000 08:06 4458088                    /home/elma/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1.Final.jar
+7f0cd2653000-7f0cd2658000 r--s 00016000 08:06 4458087                    /home/elma/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
+7f0cd2658000-7f0cd265d000 r--s 00048000 08:06 4458084                    /home/elma/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
+7f0cd265d000-7f0cd265f000 r--s 0000e000 08:06 4458083                    /home/elma/.m2/repository/com/fasterxml/classmate/1.3.0/classmate-1.3.0.jar
+7f0cd265f000-7f0cd2662000 r--s 0002b000 08:06 4458077                    /home/elma/.m2/repository/org/jboss/jandex/2.0.3.Final/jandex-2.0.3.Final.jar
+7f0cd2662000-7f0cd2667000 r--s 00068000 08:06 4458075                    /home/elma/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar
+7f0cd2667000-7f0cd26d3000 r--s 0050e000 08:06 4458064                    /home/elma/.m2/repository/org/hibernate/hibernate-core/5.1.11.Final/hibernate-core-5.1.11.Final.jar
+7f0cd26d3000-7f0cd26d5000 r--s 0000f000 08:06 4458071                    /home/elma/.m2/repository/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar
+7f0cd26d5000-7f0cd26e1000 r--s 00083000 08:06 4458066                    /home/elma/.m2/repository/org/hibernate/hibernate-entitymanager/5.1.11.Final/hibernate-entitymanager-5.1.11.Final.jar
+7f0cd26e1000-7f0cd26f3000 r--s 001d5000 08:06 4458069                    /home/elma/.m2/repository/com/unboundid/unboundid-ldapsdk/3.2.1/unboundid-ldapsdk-3.2.1.jar
+7f0cd26f3000-7f0cd26fc000 r--s 0005e000 08:06 4458062                    /home/elma/.m2/repository/com/novell/ldap/jldap/4.3/jldap-4.3.jar
+7f0cd26fc000-7f0cd27d3000 r--s 007aa000 08:06 5117944                    /home/elma/.m2/repository/net/sf/ehcache/ehcache/2.10.1/ehcache-2.10.1.jar
+7f0cd27d3000-7f0cd27d6000 r--s 00020000 08:06 5117943                    /home/elma/.m2/repository/org/hibernate/hibernate-ehcache/5.1.11.Final/hibernate-ehcache-5.1.11.Final.jar
+7f0cd27d6000-7f0cd27da000 r--s 00031000 08:06 5117940                    /home/elma/.m2/repository/commons-io/commons-io/2.6/commons-io-2.6.jar
+7f0cd27da000-7f0cd27e1000 r--s 00049000 08:06 5117938                    /home/elma/.m2/repository/org/apache/httpcomponents/httpcore/4.4.7/httpcore-4.4.7.jar
+7f0cd27e1000-7f0cd27ee000 r--s 000b2000 08:06 4719602                    /home/elma/.m2/repository/org/apache/httpcomponents/httpclient/4.5.4/httpclient-4.5.4.jar
+7f0cd27ee000-7f0cd27ef000 r--s 0000a000 08:06 4719598                    /home/elma/.m2/repository/asm/asm/3.3.1/asm-3.3.1.jar
+7f0cd27ef000-7f0cd27f0000 r--s 0000c000 08:06 4719596                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.8.v20171121/jetty-xml-9.4.8.v20171121.jar
+7f0cd27f0000-7f0cd27f3000 r--s 0001d000 08:06 4719595                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-webapp/9.4.8.v20171121/jetty-webapp-9.4.8.v20171121.jar
+7f0cd27f3000-7f0cd27f5000 r--s 00015000 08:06 4719594                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-security/9.4.8.v20171121/jetty-security-9.4.8.v20171121.jar
+7f0cd27f5000-7f0cd27f7000 r--s 00019000 08:06 4719427                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-servlet/9.4.8.v20171121/jetty-servlet-9.4.8.v20171121.jar
+7f0cd27f7000-7f0cd27fa000 r--s 0001d000 08:06 4719425                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-io/9.4.8.v20171121/jetty-io-9.4.8.v20171121.jar
+7f0cd27fa000-7f0cd2802000 r--s 0006e000 08:06 4719423                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-util/9.4.8.v20171121/jetty-util-9.4.8.v20171121.jar
+7f0cd2802000-7f0cd2805000 r--s 00026000 08:06 4719422                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-http/9.4.8.v20171121/jetty-http-9.4.8.v20171121.jar
+7f0cd2805000-7f0cd280d000 r--s 00087000 08:06 4719419                    /home/elma/.m2/repository/org/eclipse/jetty/jetty-server/9.4.8.v20171121/jetty-server-9.4.8.v20171121.jar
+7f0cd280d000-7f0cd281a000 r--s 00083000 08:06 4719417                    /home/elma/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar
+7f0cd281a000-7f0cd2833000 r--s 001bf000 08:06 4719409                    /home/elma/.m2/repository/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13.jar
+7f0cd2833000-7f0cd2836000 r--s 00008000 08:06 4719408                    /home/elma/.m2/repository/org/springframework/spring-aspects/5.0.3.RELEASE/spring-aspects-5.0.3.RELEASE.jar
+7f0cd2836000-7f0cd2840000 r--s 0004f000 08:06 4719406                    /home/elma/.m2/repository/org/springframework/spring-aop/5.0.3.RELEASE/spring-aop-5.0.3.RELEASE.jar
+7f0cd2840000-7f0cd284e000 r--s 00083000 08:06 4719392                    /home/elma/.m2/repository/org/springframework/spring-test/5.0.3.RELEASE/spring-test-5.0.3.RELEASE.jar
+7f0cd284e000-7f0cd2852000 r--s 00026000 08:06 4719401                    /home/elma/.m2/repository/org/springframework/spring-context-support/5.0.3.RELEASE/spring-context-support-5.0.3.RELEASE.jar
+7f0cd2852000-7f0cd286c000 r--s 000ed000 08:06 4719397                    /home/elma/.m2/repository/org/springframework/spring-context/5.0.3.RELEASE/spring-context-5.0.3.RELEASE.jar
+7f0cd286c000-7f0cd2870000 r--s 0002a000 08:06 4719395                    /home/elma/.m2/repository/org/springframework/spring-orm/5.0.3.RELEASE/spring-orm-5.0.3.RELEASE.jar
+7f0cd2870000-7f0cd2871000 r--s 0000c000 08:06 4719393                    /home/elma/.m2/repository/org/springframework/spring-asm/3.1.4.RELEASE/spring-asm-3.1.4.RELEASE.jar
+7f0cd2871000-7f0cd288b000 r--s 00116000 08:06 4719391                    /home/elma/.m2/repository/org/springframework/spring-web/5.0.3.RELEASE/spring-web-5.0.3.RELEASE.jar
+7f0cd288b000-7f0cd288c000 r--s 00003000 08:06 4458175                    /home/elma/.m2/repository/org/springframework/spring-jcl/5.0.3.RELEASE/spring-jcl-5.0.3.RELEASE.jar
+7f0cd288c000-7f0cd28a4000 r--s 00111000 08:06 4458173                    /home/elma/.m2/repository/org/springframework/spring-core/5.0.3.RELEASE/spring-core-5.0.3.RELEASE.jar
+7f0cd28a4000-7f0cd28a8000 r--s 0000f000 08:06 4719385                    /home/elma/.m2/repository/com/google/code/findbugs/annotations/2.0.1/annotations-2.0.1.jar
+7f0cd28a8000-7f0cd28ab000 r--s 0001d000 08:06 4719388                    /home/elma/.m2/repository/org/reflections/reflections/0.9.10/reflections-0.9.10.jar
+7f0cd28ab000-7f0cd28ac000 r--s 0000c000 08:06 5247086                    /home/elma/.m2/repository/commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.jar
+7f0cd28ac000-7f0cd28ae000 r--s 00007000 08:06 5247058                    /home/elma/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.9.1/jackson-module-jaxb-annotations-2.9.1.jar
+7f0cd28ae000-7f0cd28af000 r--s 00007000 08:06 5247050                    /home/elma/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.9.1/jackson-jaxrs-base-2.9.1.jar
+7f0cd28af000-7f0cd28b0000 r--s 00003000 08:06 5247049                    /home/elma/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.9.1/jackson-jaxrs-json-provider-2.9.1.jar
+7f0cd28b0000-7f0cd28b4000 r--s 00019000 08:06 5247036                    /home/elma/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1.jar
+7f0cd28b4000-7f0cd28b8000 r--s 0000c000 08:06 5247021                    /home/elma/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar
+7f0cd28b8000-7f0cd28bc000 r--s 00022000 08:06 5246359                    /home/elma/.m2/repository/org/glassfish/jersey/core/jersey-client/2.15/jersey-client-2.15.jar
+7f0cd28bc000-7f0cd28d1000 r--s 000ce000 08:06 5246346                    /home/elma/.m2/repository/org/glassfish/jersey/core/jersey-server/2.15/jersey-server-2.15.jar
+7f0cd28d1000-7f0cd28d2000 r--s 00004000 08:06 5246343                    /home/elma/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.1/osgi-resource-locator-1.0.1.jar
+7f0cd28d2000-7f0cd28d5000 r--s 00027000 08:06 5245839                    /home/elma/.m2/repository/org/glassfish/hk2/hk2-locator/2.4.0-b06/hk2-locator-2.4.0-b06.jar
+7f0cd28d5000-7f0cd28d7000 r--s 00002000 08:06 5245836                    /home/elma/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b06/aopalliance-repackaged-2.4.0-b06.jar
+7f0cd28d7000-7f0cd28da000 r--s 00013000 08:06 5245830                    /home/elma/.m2/repository/org/glassfish/hk2/hk2-utils/2.4.0-b06/hk2-utils-2.4.0-b06.jar
+7f0cd28da000-7f0cd28df000 r--s 00026000 08:06 5245817                    /home/elma/.m2/repository/org/glassfish/hk2/hk2-api/2.4.0-b06/hk2-api-2.4.0-b06.jar
+7f0cd28df000-7f0cd28f6000 r--s 000d4000 08:06 5245804                    /home/elma/.m2/repository/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.15/jersey-guava-2.15.jar
+7f0cd28f6000-7f0cd28f8000 r--s 00005000 08:06 5245802                    /home/elma/.m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar
+7f0cd28f8000-7f0cd2907000 r--s 000a3000 08:06 5245795                    /home/elma/.m2/repository/org/glassfish/jersey/core/jersey-common/2.15/jersey-common-2.15.jar
+7f0cd2907000-7f0cd2918000 r--s 000c6000 08:06 5245776                    /home/elma/.m2/repository/org/glassfish/grizzly/grizzly-framework/2.3.16/grizzly-framework-2.3.16.jar
+7f0cd2918000-7f0cd291d000 r--s 0004c000 08:06 5245775                    /home/elma/.m2/repository/org/glassfish/grizzly/grizzly-http/2.3.16/grizzly-http-2.3.16.jar
+7f0cd291d000-7f0cd2923000 r--s 0003f000 08:06 5245758                    /home/elma/.m2/repository/org/glassfish/grizzly/grizzly-http-server/2.3.16/grizzly-http-server-2.3.16.jar
+7f0cd2923000-7f0cd2924000 r--s 00001000 08:06 5245754                    /home/elma/.m2/repository/org/glassfish/hk2/external/javax.inject/2.4.0-b06/javax.inject-2.4.0-b06.jar
+7f0cd2924000-7f0cd2926000 r--s 00005000 08:06 5118143                    /home/elma/.m2/repository/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.15/jersey-container-grizzly2-http-2.15.jar
+7f0cd2926000-7f0cd2928000 r--s 00001000 08:06 5118141                    /home/elma/.m2/repository/net/sf/jsr107cache/jsr107cache/1.0/jsr107cache-1.0.jar
+7f0cd2928000-7f0cd2938000 r--s 00167000 08:06 5118139                    /home/elma/.m2/repository/org/apache/lucene/lucene-analyzers-common/5.0.0/lucene-analyzers-common-5.0.0.jar
+7f0cd2938000-7f0cd293b000 r--s 00019000 08:06 5118138                    /home/elma/.m2/repository/org/apache/lucene/lucene-sandbox/5.0.0/lucene-sandbox-5.0.0.jar
+7f0cd293b000-7f0cd2941000 r--s 0002c000 08:06 5118135                    /home/elma/.m2/repository/org/apache/lucene/lucene-queries/5.0.0/lucene-queries-5.0.0.jar
+7f0cd2941000-7f0cd294a000 r--s 00057000 08:06 5118133                    /home/elma/.m2/repository/org/apache/lucene/lucene-queryparser/5.0.0/lucene-queryparser-5.0.0.jar
+7f0cd294a000-7f0cd296e000 r--s 001fd000 08:06 5118131                    /home/elma/.m2/repository/org/apache/lucene/lucene-core/5.0.0/lucene-core-5.0.0.jar
+7f0cd296e000-7f0cd2979000 r--s 0008b000 08:06 5118130                    /home/elma/.m2/repository/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar
+7f0cd2979000-7f0cd297b000 r--s 00000000 08:06 5118126                    /home/elma/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar
+7f0cd297b000-7f0cd297c000 r--s 00005000 08:06 5118119                    /home/elma/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0.jar
+7f0cd297c000-7f0cd299d000 r--s 00166000 08:06 5118117                    /home/elma/.m2/repository/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0.jar
+7f0cd299d000-7f0cd29a3000 r--s 00039000 08:06 5118115                    /home/elma/.m2/repository/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar
+7f0cd29a3000-7f0cd29a5000 r--s 0000b000 08:06 4719383                    /home/elma/.m2/repository/net/minidev/json-smart/1.1.1/json-smart-1.1.1.jar
+7f0cd29a5000-7f0cd29a6000 r--s 00000000 08:06 4719381                    /home/elma/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar
+7f0cd29a6000-7f0cd29ad000 r--s 00039000 08:06 4719379                    /home/elma/.m2/repository/commons-codec/commons-codec/1.7/commons-codec-1.7.jar
+7f0cd29ad000-7f0cd29d5000 r--s 001a3000 08:06 4719378                    /home/elma/.m2/repository/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar
+7f0cd29d5000-7f0cd29d8000 r--s 00012000 08:06 4719375                    /home/elma/.m2/repository/com/nimbusds/nimbus-jose-jwt/2.10.1/nimbus-jose-jwt-2.10.1.jar
+7f0cd29d8000-7f0cd29d9000 r--s 00004000 08:06 4719374                    /home/elma/.m2/repository/org/mindrot/jbcrypt/0.4/jbcrypt-0.4.jar
+7f0cd29d9000-7f0cd29dd000 r--s 0002a000 08:06 4719364                    /home/elma/.m2/repository/commons-validator/commons-validator/1.6/commons-validator-1.6.jar
+7f0cd29dd000-7f0cd29e0000 r--s 0001d000 08:06 4719362                    /home/elma/.m2/repository/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0.jar
+7f0cd29e0000-7f0cd29e3000 r--s 0002b000 08:06 4719360                    /home/elma/.m2/repository/org/apache/commons/commons-dbcp2/2.2.0/commons-dbcp2-2.2.0.jar
+7f0cd29e3000-7f0cd29e8000 r--s 00659000 08:06 4719358                    /home/elma/.m2/repository/org/xerial/sqlite-jdbc/3.21.0/sqlite-jdbc-3.21.0.jar
+7f0cd29e8000-7f0cd29ec000 r--s 00024000 08:06 5508303                    /home/elma/.m2/repository/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4.jar
+7f0cd29ec000-7f0cd29f1000 r--s 00073000 08:06 5508301                    /home/elma/.m2/repository/org/codehaus/woodstox/woodstox-core-lgpl/4.4.1/woodstox-core-lgpl-4.4.1.jar
+7f0cd29f1000-7f0cd29f3000 r--s 0000f000 08:06 5508271                    /home/elma/.m2/repository/eu/clarin/sru/fcs/fcs-ql/0.1/fcs-ql-0.1.jar
+7f0cd29f3000-7f0cd29f5000 r--s 00017000 08:06 5508269                    /home/elma/.m2/repository/eu/clarin/sru/sru-server/1.8.0/sru-server-1.8.0.jar
+7f0cd29f5000-7f0cd29f9000 r--s 0001e000 08:06 5508258                    /home/elma/.m2/repository/eu/clarin/sru/fcs/fcs-simple-endpoint/1.3.0/fcs-simple-endpoint-1.3.0.jar
+7f0cd29f9000-7f0cd2a01000 r--s 00066000 08:06 4719619                    /home/elma/.m2/repository/log4j/apache-log4j-extras/1.2.17/apache-log4j-extras-1.2.17.jar
+7f0cd2a01000-7f0cd2a03000 r--s 00008000 08:06 5508241                    /home/elma/.m2/repository/org/z3950/zing/cql-java/1.12/cql-java-1.12.jar
+7f0cd2a03000-7f0cd2a08000 r--s 00041000 08:06 5118220                    /home/elma/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+7f0cd2a08000-7f0cd2a1a000 r--s 00133000 08:06 5247059                    /home/elma/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9.1/jackson-databind-2.9.1.jar
+7f0cd2a1a000-7f0cd2a1d000 r--s 0000e000 08:06 5247064                    /home/elma/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.9.1/jackson-annotations-2.9.1.jar
+7f0cd2a1d000-7f0cd2a21000 r--s 0004b000 08:06 5247065                    /home/elma/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.1/jackson-core-2.9.1.jar
+7f0cd2a21000-7f0cd2a4b000 r--s 001e9000 08:06 4719389                    /home/elma/.m2/repository/com/google/guava/guava/15.0/guava-15.0.jar
+7f0cd2a4b000-7f0cd2a4e000 r--s 00022000 08:06 5508294                    /home/elma/.m2/repository/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.jar
+7f0cd2a4e000-7f0cd2a51000 r--s 00026000 08:06 5508279                    /home/elma/.m2/repository/org/antlr/antlr-runtime/3.5/antlr-runtime-3.5.jar
+7f0cd2a51000-7f0cd2a55000 r--s 00036000 08:06 5508277                    /home/elma/.m2/repository/org/antlr/ST4/4.0.7/ST4-4.0.7.jar
+7f0cd2a55000-7f0cd2a56000 r--s 00002000 08:06 5508275                    /home/elma/.m2/repository/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2.jar
+7f0cd2a56000-7f0cd2a60000 r--s 0008c000 08:06 5508273                    /home/elma/.m2/repository/org/antlr/antlr4/4.2/antlr4-4.2.jar
+7f0cd2a60000-7f0cd2a62000 r--s 00001000 08:06 5382084                    /home/elma/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar
+7f0cd2a62000-7f0cd2a64000 r--s 00005000 08:06 5382060                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-compiler-api/2.2/plexus-compiler-api-2.2.jar
+7f0cd2a64000-7f0cd2a66000 r--s 00008000 08:06 5245505                    /home/elma/.m2/repository/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
+7f0cd2a66000-7f0cd2a6d000 r--s 00029000 08:06 5245472                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar
+7f0cd2a6d000-7f0cd2a71000 r--s 00034000 08:06 5247246                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.jar
+7f0cd2a71000-7f0cd2a73000 r--s 0000b000 08:06 5382080                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar
+7f0cd2a73000-7f0cd2a75000 r--s 00006000 08:06 5382078                    /home/elma/.m2/repository/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.jar
+7f0cd2a75000-7f0cd2a7d000 r--s 00049000 08:06 5382077                    /home/elma/.m2/repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
+7f0cd2a7d000-7f0cd2a7f000 r--s 0000b000 08:06 5382076                    /home/elma/.m2/repository/org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar
+7f0cd2a7f000-7f0cd2a81000 r--s 00005000 08:06 5382061                    /home/elma/.m2/repository/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.jar
+7f0cd2a81000-7f0cd2a83000 r--s 0000f000 08:06 5382059                    /home/elma/.m2/repository/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.jar
+7f0cd2a83000-7f0cd2a85000 r--s 00007000 08:06 5382049                    /home/elma/.m2/repository/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.jar
+7f0cd2a85000-7f0cd2a86000 r--s 0000b000 08:06 5247261                    /home/elma/.m2/repository/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar
+7f0cd2a86000-7f0cd2a8a000 r--s 00023000 08:06 5247259                    /home/elma/.m2/repository/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.jar
+7f0cd2a8a000-7f0cd2a8c000 r--s 00003000 08:06 5770228                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-lifecycles/2.3.0/guice-plexus-lifecycles-2.3.0.jar
+7f0cd2a8c000-7f0cd2a8e000 r--s 00003000 08:06 5770225                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-scanners/2.3.0/guice-plexus-scanners-2.3.0.jar
+7f0cd2a8e000-7f0cd2a90000 r--s 00005000 08:06 5770222                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-binders/2.3.0/guice-plexus-binders-2.3.0.jar
+7f0cd2a90000-7f0cd2a92000 r--s 00002000 08:06 5770220                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-locators/2.3.0/guice-plexus-locators-2.3.0.jar
+7f0cd2a92000-7f0cd2a94000 r--s 00001000 08:06 5770218                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-converters/2.3.0/guice-plexus-converters-2.3.0.jar
+7f0cd2a94000-7f0cd2a96000 r--s 00002000 08:06 5770216                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-metadata/2.3.0/guice-plexus-metadata-2.3.0.jar
+7f0cd2a96000-7f0cd2a98000 r--s 00000000 08:06 5770214                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-converters/2.3.0/guice-bean-converters-2.3.0.jar
+7f0cd2a98000-7f0cd2a9a000 r--s 00013000 08:06 5770212                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-scanners/2.3.0/guice-bean-scanners-2.3.0.jar
+7f0cd2a9a000-7f0cd2a9b000 r--s 00001000 08:06 5380525                    /home/elma/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
+7f0cd2a9b000-7f0cd2a9e000 r--s 00008000 08:06 5380199                    /home/elma/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
+7f0cd2a9e000-7f0cd2aa0000 r--s 00009000 08:06 5770210                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-binders/2.3.0/guice-bean-binders-2.3.0.jar
+7f0cd2aa0000-7f0cd2aa3000 r--s 0000b000 08:06 5770208                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-locators/2.3.0/guice-bean-locators-2.3.0.jar
+7f0cd2aa3000-7f0cd2aa5000 r--s 0000e000 08:06 5770204                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-reflect/2.3.0/guice-bean-reflect-2.3.0.jar
+7f0cd2aa5000-7f0cd2ab1000 r--s 00083000 08:06 5247279                    /home/elma/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0.jar
+7f0cd2ab1000-7f0cd2ab2000 r--s 00000000 08:06 5247277                    /home/elma/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar
+7f0cd2ab2000-7f0cd2ab7000 r--s 00019000 08:06 5770198                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-plexus-shim/2.3.0/guice-plexus-shim-2.3.0.jar
+7f0cd2ab7000-7f0cd2ab9000 r--s 00004000 08:06 5770188                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-containers/2.3.0/guice-bean-containers-2.3.0.jar
+7f0cd2ab9000-7f0cd2ad8000 r--s 00152000 08:06 5247258                    /home/elma/.m2/repository/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar
+7f0cd2ad8000-7f0cd2ae0000 r--s 00050000 08:06 5247257                    /home/elma/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar
+7f0cd2ae0000-7f0cd2ae7000 r--s 00040000 08:06 5247256                    /home/elma/.m2/repository/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar
+7f0cd2ae7000-7f0cd2ae9000 r--s 0000a000 08:06 5247251                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.4/plexus-classworlds-2.4.jar
+7f0cd2ae9000-7f0cd2aea000 ---p 00000000 00:00 0 
+7f0cd2aea000-7f0cd2bea000 rw-p 00000000 00:00 0 
+7f0cd2bea000-7f0cd2bed000 ---p 00000000 00:00 0 
+7f0cd2bed000-7f0cd2ceb000 rw-p 00000000 00:00 0 
+7f0cd2ceb000-7f0cd2cee000 ---p 00000000 00:00 0 
+7f0cd2cee000-7f0cd2dec000 rw-p 00000000 00:00 0 
+7f0cd2dec000-7f0cd2def000 ---p 00000000 00:00 0 
+7f0cd2def000-7f0cd2eed000 rw-p 00000000 00:00 0 
+7f0cd2eed000-7f0cd2ef0000 ---p 00000000 00:00 0 
+7f0cd2ef0000-7f0cd2fee000 rw-p 00000000 00:00 0 
+7f0cd2fee000-7f0cd2ff1000 ---p 00000000 00:00 0 
+7f0cd2ff1000-7f0cd30ef000 rw-p 00000000 00:00 0 
+7f0cd30ef000-7f0cd30f2000 ---p 00000000 00:00 0 
+7f0cd30f2000-7f0cd31f0000 rw-p 00000000 00:00 0 
+7f0cd31f0000-7f0cd31f3000 ---p 00000000 00:00 0 
+7f0cd31f3000-7f0cd32f1000 rw-p 00000000 00:00 0 
+7f0cd32f1000-7f0cd32f5000 r-xp 00000000 08:06 9177002                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libdt_socket.so
+7f0cd32f5000-7f0cd34f4000 ---p 00004000 08:06 9177002                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libdt_socket.so
+7f0cd34f4000-7f0cd34f5000 rw-p 00003000 08:06 9177002                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libdt_socket.so
+7f0cd34f5000-7f0cd34f8000 ---p 00000000 00:00 0 
+7f0cd34f8000-7f0cd35f6000 rw-p 00000000 00:00 0 
+7f0cd35f6000-7f0cd35f9000 ---p 00000000 00:00 0 
+7f0cd35f9000-7f0cd36f7000 rw-p 00000000 00:00 0 
+7f0cd36f7000-7f0cd36fa000 ---p 00000000 00:00 0 
+7f0cd36fa000-7f0cd37f8000 rw-p 00000000 00:00 0 
+7f0cd37f8000-7f0cd37f9000 ---p 00000000 00:00 0 
+7f0cd37f9000-7f0cd4000000 rw-p 00000000 00:00 0 
+7f0cd4000000-7f0cd4021000 rw-p 00000000 00:00 0 
+7f0cd4021000-7f0cd8000000 ---p 00000000 00:00 0 
+7f0cd8000000-7f0cd8021000 rw-p 00000000 00:00 0 
+7f0cd8021000-7f0cdc000000 ---p 00000000 00:00 0 
+7f0cdc000000-7f0cdc021000 rw-p 00000000 00:00 0 
+7f0cdc021000-7f0ce0000000 ---p 00000000 00:00 0 
+7f0ce0000000-7f0ce0001000 r--s 00001000 08:06 5770193                    /home/elma/.m2/repository/org/sonatype/sisu/inject/guice-bean-inject/2.3.0/guice-bean-inject-2.3.0.jar
+7f0ce0001000-7f0ce0003000 r--s 00000000 08:06 5247250                    /home/elma/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
+7f0ce0003000-7f0ce0009000 r--s 0002c000 08:06 5247247                    /home/elma/.m2/repository/org/sonatype/sisu/sisu-inject-plexus/2.3.0/sisu-inject-plexus-2.3.0.jar
+7f0ce0009000-7f0ce000b000 r--s 0000b000 08:06 5247245                    /home/elma/.m2/repository/org/apache/maven/maven-artifact/3.0.5/maven-artifact-3.0.5.jar
+7f0ce000b000-7f0ce001c000 r--s 0008a000 08:06 4719356                    /home/elma/.m2/repository/joda-time/joda-time/2.9.9/joda-time-2.9.9.jar
+7f0ce001c000-7f0ce0031000 r--s 00161000 08:06 4719355                    /home/elma/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar
+7f0ce0031000-7f0ce0054000 r--s 0016b000 08:06 4719343                    /home/elma/.m2/repository/com/sun/jersey/jersey-bundle/1.19.4/jersey-bundle-1.19.4.jar
+7f0ce0054000-7f0ce1000000 rw-p 00000000 00:00 0 
+7f0ce1000000-7f0ce2070000 rwxp 00000000 00:00 0 
+7f0ce2070000-7f0cf0000000 ---p 00000000 00:00 0 
+7f0cf0000000-7f0cf2f05000 rw-p 00000000 00:00 0 
+7f0cf2f05000-7f0cf4000000 ---p 00000000 00:00 0 
+7f0cf4000000-7f0cf4002000 r--s 00026000 08:06 5247242                    /home/elma/.m2/repository/org/apache/maven/maven-model/3.0.5/maven-model-3.0.5.jar
+7f0cf4002000-7f0cf4004000 r--s 0000b000 08:06 5247243                    /home/elma/.m2/repository/org/apache/maven/maven-plugin-api/3.0.5/maven-plugin-api-3.0.5.jar
+7f0cf4004000-7f0cf400a000 r--s 00044000 08:06 5247239                    /home/elma/.m2/repository/org/antlr/antlr4-runtime/4.5.1/antlr4-runtime-4.5.1.jar
+7f0cf400a000-7f0cf400c000 r--s 00009000 08:06 4719352                    /home/elma/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
+7f0cf400c000-7f0cf4015000 r--s 0006f000 08:06 4719346                    /home/elma/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar
+7f0cf4015000-7f0cf4165000 rw-p 00000000 00:00 0 
+7f0cf4165000-7f0cf433e000 r--s 03d2c000 08:06 7223520                    /usr/local/java/jdk1.8.0_112/jre/lib/rt.jar
+7f0cf433e000-7f0cf4b7a000 rw-p 00000000 00:00 0 
+7f0cf4b7a000-7f0cf4b7b000 ---p 00000000 00:00 0 
+7f0cf4b7b000-7f0cf4c7b000 rw-p 00000000 00:00 0 
+7f0cf4c7b000-7f0cf4c7c000 ---p 00000000 00:00 0 
+7f0cf4c7c000-7f0cf4d7c000 rw-p 00000000 00:00 0 
+7f0cf4d7c000-7f0cf4d7d000 ---p 00000000 00:00 0 
+7f0cf4d7d000-7f0cf4e7d000 rw-p 00000000 00:00 0 
+7f0cf4e7d000-7f0cf4e7e000 ---p 00000000 00:00 0 
+7f0cf4e7e000-7f0cf4fc3000 rw-p 00000000 00:00 0 
+7f0cf4fc3000-7f0cf54ad000 ---p 00000000 00:00 0 
+7f0cf54ad000-7f0cf54f2000 rw-p 00000000 00:00 0 
+7f0cf54f2000-7f0cf59db000 ---p 00000000 00:00 0 
+7f0cf59db000-7f0cf5a8b000 rw-p 00000000 00:00 0 
+7f0cf5a8b000-7f0cf5c73000 ---p 00000000 00:00 0 
+7f0cf5c73000-7f0cf5cb6000 rw-p 00000000 00:00 0 
+7f0cf5cb6000-7f0cf6034000 ---p 00000000 00:00 0 
+7f0cf6034000-7f0cf604e000 r-xp 00000000 08:06 9176984                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libzip.so
+7f0cf604e000-7f0cf624e000 ---p 0001a000 08:06 9176984                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libzip.so
+7f0cf624e000-7f0cf624f000 rw-p 0001a000 08:06 9176984                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libzip.so
+7f0cf624f000-7f0cf625a000 r-xp 00000000 08:06 3539147                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
+7f0cf625a000-7f0cf6459000 ---p 0000b000 08:06 3539147                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
+7f0cf6459000-7f0cf645a000 r--p 0000a000 08:06 3539147                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
+7f0cf645a000-7f0cf645b000 rw-p 0000b000 08:06 3539147                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
+7f0cf645b000-7f0cf6461000 rw-p 00000000 00:00 0 
+7f0cf6461000-7f0cf646c000 r-xp 00000000 08:06 3539155                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
+7f0cf646c000-7f0cf666b000 ---p 0000b000 08:06 3539155                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
+7f0cf666b000-7f0cf666c000 r--p 0000a000 08:06 3539155                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
+7f0cf666c000-7f0cf666d000 rw-p 0000b000 08:06 3539155                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
+7f0cf666d000-7f0cf6683000 r-xp 00000000 08:06 3539039                    /lib/x86_64-linux-gnu/libnsl-2.23.so
+7f0cf6683000-7f0cf6882000 ---p 00016000 08:06 3539039                    /lib/x86_64-linux-gnu/libnsl-2.23.so
+7f0cf6882000-7f0cf6883000 r--p 00015000 08:06 3539039                    /lib/x86_64-linux-gnu/libnsl-2.23.so
+7f0cf6883000-7f0cf6884000 rw-p 00016000 08:06 3539039                    /lib/x86_64-linux-gnu/libnsl-2.23.so
+7f0cf6884000-7f0cf6886000 rw-p 00000000 00:00 0 
+7f0cf6886000-7f0cf688e000 r-xp 00000000 08:06 3539138                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
+7f0cf688e000-7f0cf6a8d000 ---p 00008000 08:06 3539138                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
+7f0cf6a8d000-7f0cf6a8e000 r--p 00007000 08:06 3539138                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
+7f0cf6a8e000-7f0cf6a8f000 rw-p 00008000 08:06 3539138                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
+7f0cf6a8f000-7f0cf6ee5000 r--p 00000000 08:06 5899730                    /usr/lib/locale/locale-archive
+7f0cf6ee5000-7f0cf6ee7000 r-xp 00000000 08:06 9176992                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnpt.so
+7f0cf6ee7000-7f0cf70e7000 ---p 00002000 08:06 9176992                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnpt.so
+7f0cf70e7000-7f0cf70e8000 rw-p 00002000 08:06 9176992                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libnpt.so
+7f0cf70e8000-7f0cf7121000 r-xp 00000000 08:06 9176958                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjdwp.so
+7f0cf7121000-7f0cf7321000 ---p 00039000 08:06 9176958                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjdwp.so
+7f0cf7321000-7f0cf7322000 rw-p 00039000 08:06 9176958                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjdwp.so
+7f0cf7322000-7f0cf7323000 rw-p 00000000 00:00 0 
+7f0cf7323000-7f0cf734e000 r-xp 00000000 08:06 9177011                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjava.so
+7f0cf734e000-7f0cf754d000 ---p 0002b000 08:06 9177011                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjava.so
+7f0cf754d000-7f0cf754f000 rw-p 0002a000 08:06 9177011                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libjava.so
+7f0cf754f000-7f0cf755c000 r-xp 00000000 08:06 9176962                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libverify.so
+7f0cf755c000-7f0cf775b000 ---p 0000d000 08:06 9176962                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libverify.so
+7f0cf775b000-7f0cf775d000 rw-p 0000c000 08:06 9176962                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/libverify.so
+7f0cf775d000-7f0cf7764000 r-xp 00000000 08:06 3539159                    /lib/x86_64-linux-gnu/librt-2.23.so
+7f0cf7764000-7f0cf7963000 ---p 00007000 08:06 3539159                    /lib/x86_64-linux-gnu/librt-2.23.so
+7f0cf7963000-7f0cf7964000 r--p 00006000 08:06 3539159                    /lib/x86_64-linux-gnu/librt-2.23.so
+7f0cf7964000-7f0cf7965000 rw-p 00007000 08:06 3539159                    /lib/x86_64-linux-gnu/librt-2.23.so
+7f0cf7965000-7f0cf7a6d000 r-xp 00000000 08:06 3538973                    /lib/x86_64-linux-gnu/libm-2.23.so
+7f0cf7a6d000-7f0cf7c6c000 ---p 00108000 08:06 3538973                    /lib/x86_64-linux-gnu/libm-2.23.so
+7f0cf7c6c000-7f0cf7c6d000 r--p 00107000 08:06 3538973                    /lib/x86_64-linux-gnu/libm-2.23.so
+7f0cf7c6d000-7f0cf7c6e000 rw-p 00108000 08:06 3538973                    /lib/x86_64-linux-gnu/libm-2.23.so
+7f0cf7c6e000-7f0cf893c000 r-xp 00000000 08:06 9177015                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so
+7f0cf893c000-7f0cf8b3c000 ---p 00cce000 08:06 9177015                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so
+7f0cf8b3c000-7f0cf8c15000 rw-p 00cce000 08:06 9177015                    /usr/local/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so
+7f0cf8c15000-7f0cf8c60000 rw-p 00000000 00:00 0 
+7f0cf8c60000-7f0cf8e20000 r-xp 00000000 08:06 3539120                    /lib/x86_64-linux-gnu/libc-2.23.so
+7f0cf8e20000-7f0cf9020000 ---p 001c0000 08:06 3539120                    /lib/x86_64-linux-gnu/libc-2.23.so
+7f0cf9020000-7f0cf9024000 r--p 001c0000 08:06 3539120                    /lib/x86_64-linux-gnu/libc-2.23.so
+7f0cf9024000-7f0cf9026000 rw-p 001c4000 08:06 3539120                    /lib/x86_64-linux-gnu/libc-2.23.so
+7f0cf9026000-7f0cf902a000 rw-p 00000000 00:00 0 
+7f0cf902a000-7f0cf902d000 r-xp 00000000 08:06 3539125                    /lib/x86_64-linux-gnu/libdl-2.23.so
+7f0cf902d000-7f0cf922c000 ---p 00003000 08:06 3539125                    /lib/x86_64-linux-gnu/libdl-2.23.so
+7f0cf922c000-7f0cf922d000 r--p 00002000 08:06 3539125                    /lib/x86_64-linux-gnu/libdl-2.23.so
+7f0cf922d000-7f0cf922e000 rw-p 00003000 08:06 3539125                    /lib/x86_64-linux-gnu/libdl-2.23.so
+7f0cf922e000-7f0cf9243000 r-xp 00000000 08:06 9176231                    /usr/local/java/jdk1.8.0_112/lib/amd64/jli/libjli.so
+7f0cf9243000-7f0cf9443000 ---p 00015000 08:06 9176231                    /usr/local/java/jdk1.8.0_112/lib/amd64/jli/libjli.so
+7f0cf9443000-7f0cf9444000 rw-p 00015000 08:06 9176231                    /usr/local/java/jdk1.8.0_112/lib/amd64/jli/libjli.so
+7f0cf9444000-7f0cf945c000 r-xp 00000000 08:06 3539119                    /lib/x86_64-linux-gnu/libpthread-2.23.so
+7f0cf945c000-7f0cf965b000 ---p 00018000 08:06 3539119                    /lib/x86_64-linux-gnu/libpthread-2.23.so
+7f0cf965b000-7f0cf965c000 r--p 00017000 08:06 3539119                    /lib/x86_64-linux-gnu/libpthread-2.23.so
+7f0cf965c000-7f0cf965d000 rw-p 00018000 08:06 3539119                    /lib/x86_64-linux-gnu/libpthread-2.23.so
+7f0cf965d000-7f0cf9661000 rw-p 00000000 00:00 0 
+7f0cf9661000-7f0cf9687000 r-xp 00000000 08:06 3539041                    /lib/x86_64-linux-gnu/ld-2.23.so
+7f0cf9687000-7f0cf968f000 r--s 00045000 08:06 4719350                    /home/elma/.m2/repository/junit/junit/4.12/junit-4.12.jar
+7f0cf968f000-7f0cf9760000 rw-p 00000000 00:00 0 
+7f0cf9760000-7f0cf9763000 ---p 00000000 00:00 0 
+7f0cf9763000-7f0cf9866000 rw-p 00000000 00:00 0 
+7f0cf9866000-7f0cf9867000 r--s 00005000 08:06 5245652                    /home/elma/.m2/repository/org/antlr/antlr4-maven-plugin/4.2/antlr4-maven-plugin-4.2.jar
+7f0cf9867000-7f0cf9868000 r--s 00002000 08:06 4719348                    /home/elma/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar
+7f0cf9868000-7f0cf986a000 r--s 00003000 08:06 4719344                    /home/elma/.m2/repository/com/sun/jersey/contribs/jersey-spring/1.19.4/jersey-spring-1.19.4.jar
+7f0cf986a000-7f0cf987a000 r--s 0009d000 08:06 4458111                    /home/elma/.m2/repository/com/sun/jersey/jersey-server/1.19.4/jersey-server-1.19.4.jar
+7f0cf987a000-7f0cf987c000 r--s 0000a000 08:06 4458165                    /home/elma/.m2/repository/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar
+7f0cf987c000-7f0cf9884000 rw-s 00000000 08:06 8127328                    /tmp/hsperfdata_elma/31138
+7f0cf9884000-7f0cf9885000 rw-p 00000000 00:00 0 
+7f0cf9885000-7f0cf9886000 ---p 00000000 00:00 0 
+7f0cf9886000-7f0cf9887000 r--p 00025000 08:06 3539041                    /lib/x86_64-linux-gnu/ld-2.23.so
+7f0cf9887000-7f0cf9888000 rw-p 00026000 08:06 3539041                    /lib/x86_64-linux-gnu/ld-2.23.so
+7f0cf9888000-7f0cf9889000 rw-p 00000000 00:00 0 
+7ffd1af51000-7ffd1af78000 rw-p 00000000 00:00 0                          [stack]
+7ffd1afe6000-7ffd1afe9000 r--p 00000000 00:00 0                          [vvar]
+7ffd1afe9000-7ffd1afeb000 r-xp 00000000 00:00 0                          [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
+
+VM Arguments:
+jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:45788 -ea -Dfile.encoding=UTF-8 
+java_command: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 38027 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -test de.ids_mannheim.korap.web.controller.OAuth2ControllerTest:testRequestTokenPasswordGrantNonNative
+java_class_path (initial): /home/elma/git/Kustvakt/full/target/test-classes:/home/elma/git/Kustvakt/full/target/classes:/home/elma/git/Kustvakt/core/target/classes:/home/elma/.m2/repository/com/sun/jersey/jersey-bundle/1.19.4/jersey-bundle-1.19.4.jar:/home/elma/.m2/repository/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar:/home/elma/.m2/repository/com/sun/jersey/jersey-server/1.19.4/jersey-server-1.19.4.jar:/home/elma/.m2/repository/com/sun/jersey/contribs/jersey-spring/1.19.4/jersey-spring-1.19.4.jar:/home/elma/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar:/home/elma/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/home/elma/.m2/repository/junit/junit/4.12/junit-4.12.jar:/home/elma/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:/home/elma/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar:/home/elma/.m2/repository/joda-time/joda-time/2.9.9/joda-time-2.9.9.jar:/home/elma/git/Koral/target/classes:/home/elma/.m2/repository/org/antlr/antlr4-runtime/4.5.1/antlr4-runtime-4.5.1.jar:/home/elma/.m2/repository/org/antlr/antlr4-maven-plugin/4.2/antlr4-maven-plugin-4.2.jar:/home/elma/.m2/repository/org/apache/maven/maven-plugin-api/3.0.5/maven-plugin-api-3.0.5.jar:/home/elma/.m2/repository/org/apache/maven/maven-model/3.0.5/maven-model-3.0.5.jar:/home/elma/.m2/repository/org/apache/maven/maven-artifact/3.0.5/maven-artifact-3.0.5.jar:/home/elma/.m2/repository/org/sonatype/sisu/sisu-inject-plexus/2.3.0/sisu-inject-plexus-2.3.0.jar:/home/elma/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar:/home/elma/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.4/plexus-classworlds-2.4.jar:/home/elma/.m2/repository/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar:/home/elma/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar:/home/elma/.m2/repository/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar:/home/e
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/usr/local/java/jdk
+PATH=/home/elma/.perlbrew/libs/perl-5.22.3@korap/bin:/home/elma/perl5/perlbrew/bin:/home/elma/perl5/perlbrew/perls/perl-5.22.3/bin:/home/elma/bin:/home/elma/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java:/snap/bin:/usr/local/java/jdk/bin:/usr/local/eclipse/default:/usr/sbin/openvpn:/usr/local/xml
+USERNAME=elma
+SHELL=/bin/bash
+DISPLAY=:1
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0xac7800], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGBUS: [libjvm.so+0xac7800], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGFPE: [libjvm.so+0x920990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGPIPE: [libjvm.so+0x920990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGXFSZ: [libjvm.so+0x920990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGILL: [libjvm.so+0x920990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
+SIGUSR2: [libjvm.so+0x9221d0], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
+SIGHUP: [libjvm.so+0x9235d0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGINT: [libjvm.so+0x9235d0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGTERM: [libjvm.so+0x9235d0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+SIGQUIT: [libjvm.so+0x9235d0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
+
+
+---------------  S Y S T E M  ---------------
+
+OS:DISTRIB_ID=Ubuntu
+DISTRIB_RELEASE=16.04
+DISTRIB_CODENAME=xenial
+DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
+
+uname:Linux 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64
+libc:glibc 2.23 NPTL 2.23 
+rlimit: STACK 8192k, CORE 0k, NPROC 63149, NOFILE 1048576, AS infinity
+load average:2,23 1,04 1,04
+
+/proc/meminfo:
+MemTotal:       16295828 kB
+MemFree:          154036 kB
+MemAvailable:      32696 kB
+Buffers:             488 kB
+Cached:          1487772 kB
+SwapCached:            0 kB
+Active:         14455584 kB
+Inactive:        1231628 kB
+Active(anon):   14443064 kB
+Inactive(anon):  1222896 kB
+Active(file):      12520 kB
+Inactive(file):     8732 kB
+Unevictable:          64 kB
+Mlocked:              64 kB
+SwapTotal:             0 kB
+SwapFree:              0 kB
+Dirty:               316 kB
+Writeback:             0 kB
+AnonPages:      14200032 kB
+Mapped:           712548 kB
+Shmem:           1465908 kB
+Slab:             153108 kB
+SReclaimable:      74676 kB
+SUnreclaim:        78432 kB
+KernelStack:       26016 kB
+PageTables:       141888 kB
+NFS_Unstable:          0 kB
+Bounce:                0 kB
+WritebackTmp:          0 kB
+CommitLimit:     8147912 kB
+Committed_AS:   27012252 kB
+VmallocTotal:   34359738367 kB
+VmallocUsed:           0 kB
+VmallocChunk:          0 kB
+HardwareCorrupted:     0 kB
+AnonHugePages:         0 kB
+CmaTotal:              0 kB
+CmaFree:               0 kB
+HugePages_Total:       0
+HugePages_Free:        0
+HugePages_Rsvd:        0
+HugePages_Surp:        0
+Hugepagesize:       2048 kB
+DirectMap4k:      420984 kB
+DirectMap2M:    16220160 kB
+
+
+CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 58 stepping 9, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, erms, ht, tsc, tscinvbit, tscinv
+
+/proc/cpuinfo:
+processor	: 0
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 58
+model name	: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
+stepping	: 9
+microcode	: 0x1f
+cpu MHz		: 3352.671
+cache size	: 4096 KB
+physical id	: 0
+siblings	: 4
+core id		: 0
+cpu cores	: 2
+apicid		: 0
+initial apicid	: 0
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 13
+wp		: yes
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb spec_ctrl retpoline kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
+bugs		: cpu_meltdown spectre_v1 spectre_v2
+bogomips	: 5786.63
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 36 bits physical, 48 bits virtual
+power management:
+
+processor	: 1
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 58
+model name	: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
+stepping	: 9
+microcode	: 0x1f
+cpu MHz		: 3399.910
+cache size	: 4096 KB
+physical id	: 0
+siblings	: 4
+core id		: 0
+cpu cores	: 2
+apicid		: 1
+initial apicid	: 1
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 13
+wp		: yes
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb spec_ctrl retpoline kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
+bugs		: cpu_meltdown spectre_v1 spectre_v2
+bogomips	: 5786.63
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 36 bits physical, 48 bits virtual
+power management:
+
+processor	: 2
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 58
+model name	: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
+stepping	: 9
+microcode	: 0x1f
+cpu MHz		: 3399.910
+cache size	: 4096 KB
+physical id	: 0
+siblings	: 4
+core id		: 1
+cpu cores	: 2
+apicid		: 2
+initial apicid	: 2
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 13
+wp		: yes
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb spec_ctrl retpoline kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
+bugs		: cpu_meltdown spectre_v1 spectre_v2
+bogomips	: 5786.63
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 36 bits physical, 48 bits virtual
+power management:
+
+processor	: 3
+vendor_id	: GenuineIntel
+cpu family	: 6
+model		: 58
+model name	: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
+stepping	: 9
+microcode	: 0x1f
+cpu MHz		: 3399.910
+cache size	: 4096 KB
+physical id	: 0
+siblings	: 4
+core id		: 1
+cpu cores	: 2
+apicid		: 3
+initial apicid	: 3
+fpu		: yes
+fpu_exception	: yes
+cpuid level	: 13
+wp		: yes
+flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb spec_ctrl retpoline kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
+bugs		: cpu_meltdown spectre_v1 spectre_v2
+bogomips	: 5786.63
+clflush size	: 64
+cache_alignment	: 64
+address sizes	: 36 bits physical, 48 bits virtual
+power management:
+
+
+
+Memory: 4k page, physical 16295828k(153076k free), swap 0k(0k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (25.112-b15) for linux-amd64 JRE (1.8.0_112-b15), built on Sep 22 2016 21:10:53 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
+
+time: Mon Apr 23 17:48:10 2018
+elapsed time: 12 seconds (0d 0h 0m 12s)
+
diff --git a/full/pom.xml b/full/pom.xml
index 5587931..0337795 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -283,6 +283,12 @@
 			<version>4.0</version>
 		</dependency>
 		
+		<!-- OAuth -->
+		<dependency>
+			<groupId>org.apache.oltu.oauth2</groupId>
+			<artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
+			<version>1.0.0</version>
+		</dependency>
 	</dependencies>
 
 </project>
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
index 991e8f4..1c22fea 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
@@ -44,7 +44,7 @@
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.user.DemoUser;
 import de.ids_mannheim.korap.user.KorAPUser;
-import de.ids_mannheim.korap.user.ShibUser;
+import de.ids_mannheim.korap.user.ShibbolethUser;
 import de.ids_mannheim.korap.user.User;
 import de.ids_mannheim.korap.user.User.CorpusAccess;
 import de.ids_mannheim.korap.user.User.Location;
@@ -389,7 +389,7 @@
 						StatusCodes.LOGIN_FAILED, username);
 			}
 
-		} else if (unknown instanceof ShibUser) {
+		} else if (unknown instanceof ShibbolethUser) {
 			// todo
 		}
 		jlog.debug("Authentication done: "+unknown);
@@ -521,7 +521,7 @@
 			 * username); }
 			 */
 
-		} else if (unknown instanceof ShibUser) {
+		} else if (unknown instanceof ShibbolethUser) {
 			// todo
 		}
 
@@ -753,17 +753,20 @@
 	}
 
 	// todo:
-	private ShibUser createShibbUserAccount(Map<String, Object> attributes) throws KustvaktException {
+	private ShibbolethUser createShibbUserAccount(Map<String, Object> attributes) throws KustvaktException {
 		jlog.debug("creating shibboleth user account for user attr: {}", attributes);
 		Map<String, Object> safeMap = validator.validateMap(attributes);
 
 		// todo eppn non-unique.join with idp or use persistent_id as username
 		// identifier
-		ShibUser user = User.UserFactory.getShibInstance((String) safeMap.get(Attributes.EPPN),
-				(String) safeMap.get(Attributes.MAIL), (String) safeMap.get(Attributes.CN));
-		user.setAffiliation((String) safeMap.get(Attributes.EDU_AFFIL));
-		user.setAccountCreation(TimeUtils.getNow().getMillis());
+		// EM: disabled
+//		ShibbolethUser user = User.UserFactory.getShibInstance((String) safeMap.get(Attributes.EPPN),
+//				(String) safeMap.get(Attributes.MAIL), (String) safeMap.get(Attributes.CN));
+//		user.setAffiliation((String) safeMap.get(Attributes.EDU_AFFIL));
+//		user.setAccountCreation(TimeUtils.getNow().getMillis());
 
+		ShibbolethUser user = null;
+		
 		UserDetails d = new UserDetails();
 		d.read(attributes, true);
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/OAuth2ClientDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/OAuth2ClientDao.java
index 6e75f65..e1759c4 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/OAuth2ClientDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/OAuth2ClientDao.java
@@ -6,7 +6,6 @@
 import javax.persistence.Query;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
 import org.springframework.stereotype.Repository;
@@ -27,8 +26,9 @@
     private EntityManager entityManager;
 
     public void registerClient (String id, String secretHashcode, String name,
-            OAuth2ClientType type, boolean isNative, String url, int urlHashCode,
-            String redirectURI, String registeredBy) throws KustvaktException {
+            OAuth2ClientType type, boolean isNative, String url,
+            int urlHashCode, String redirectURI, String registeredBy,
+            String description) throws KustvaktException {
         ParameterChecker.checkStringValue(id, "client id");
         ParameterChecker.checkStringValue(name, "client name");
         ParameterChecker.checkObjectValue(type, "client type");
@@ -46,6 +46,7 @@
         client.setUrlHashCode(urlHashCode);
         client.setRedirectURI(redirectURI);
         client.setRegisteredBy(registeredBy);
+        client.setDescription(description);
         entityManager.persist(client);
     }
 
@@ -68,7 +69,7 @@
         }
         catch (NoResultException e) {
             throw new KustvaktException(StatusCodes.CLIENT_NOT_FOUND,
-                    "Unknown client with "+clientId+".", "invalid_client");
+                    "Unknown client with " + clientId + ".", "invalid_client");
         }
         catch (Exception e) {
             throw new KustvaktException(StatusCodes.CLIENT_NOT_FOUND,
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/OAuth2Client.java b/full/src/main/java/de/ids_mannheim/korap/entity/OAuth2Client.java
index 760fc13..9efab11 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/OAuth2Client.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/OAuth2Client.java
@@ -37,11 +37,13 @@
     private String redirectURI;
     @Column(name = "registered_by")
     private String registeredBy;
+    private String description;
 
     @Override
     public String toString () {
-        return "id=" + id + ", secret=" + secret + ", type=" + type + ", name="
-                + name + ", url=" + url + ", redirectURI=" + redirectURI
-                + ", registeredBy=" + registeredBy;
+        return "id=" + id + ", name=" + name + ", secret=" + secret + ", type="
+                + type + ", isNative=" + isNative + ", url=" + url
+                + ", redirectURI=" + redirectURI + ", registeredBy="
+                + registeredBy + ", description=" + description;
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/handlers/EntityDao.java b/full/src/main/java/de/ids_mannheim/korap/handlers/EntityDao.java
index fd3c1e8..fd7fdc2 100644
--- a/full/src/main/java/de/ids_mannheim/korap/handlers/EntityDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/handlers/EntityDao.java
@@ -1,21 +1,11 @@
 package de.ids_mannheim.korap.handlers;
 
-import de.ids_mannheim.korap.config.ParamFields;
-import de.ids_mannheim.korap.config.URIParam;
-import de.ids_mannheim.korap.exceptions.EmptyResultException;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.exceptions.DatabaseException;
-import de.ids_mannheim.korap.interfaces.EntityHandlerIface;
-import de.ids_mannheim.korap.interfaces.KustvaktBaseDaoInterface;
-import de.ids_mannheim.korap.interfaces.db.PersistenceClient;
-import de.ids_mannheim.korap.user.KorAPUser;
-import de.ids_mannheim.korap.user.ShibUser;
-import de.ids_mannheim.korap.user.DemoUser;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.user.User.UserFactory;
-import de.ids_mannheim.korap.utils.BooleanUtils;
-import de.ids_mannheim.korap.utils.TimeUtils;
+import java.sql.Date;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.dao.DataAccessException;
@@ -26,11 +16,19 @@
 import org.springframework.jdbc.support.GeneratedKeyHolder;
 import org.springframework.jdbc.support.KeyHolder;
 
-import java.sql.Date;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import de.ids_mannheim.korap.config.ParamFields;
+import de.ids_mannheim.korap.config.URIParam;
+import de.ids_mannheim.korap.exceptions.DatabaseException;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.interfaces.EntityHandlerIface;
+import de.ids_mannheim.korap.interfaces.KustvaktBaseDaoInterface;
+import de.ids_mannheim.korap.interfaces.db.PersistenceClient;
+import de.ids_mannheim.korap.user.KorAPUser;
+import de.ids_mannheim.korap.user.ShibbolethUser;
+import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.utils.BooleanUtils;
+import de.ids_mannheim.korap.utils.TimeUtils;
 
 /* WKP: In computer software, a data access object (DAO) is an object that provides an abstract interface to some type 
  * of database or other persistence mechanism. By mapping application calls to the persistence layer, the DAO provides 
@@ -154,14 +152,14 @@
                     //                    "uri_expiration=:exp "
                     + "WHERE id=:id";
         }
-        else if (user instanceof ShibUser) {
-            ShibUser s = (ShibUser) user;
+        else if (user instanceof ShibbolethUser) {
+            ShibbolethUser s = (ShibbolethUser) user;
             //todo:
             //            np.addValue("ali", s.getAccountLink());
             np.addValue("ali", null);
             np.addValue("edu", s.getAffiliation());
             np.addValue("id", s.getId());
-            np.addValue("cn", s.getCn());
+            np.addValue("cn", s.getCommonName());
             np.addValue("mail", s.getMail());
 
             query = "UPDATE shibusers SET account_link=:ali"
@@ -225,8 +223,8 @@
 
             //fixme: still applicable?
         }
-        else if (user instanceof ShibUser) {
-            ShibUser s = (ShibUser) user;
+        else if (user instanceof ShibbolethUser) {
+            ShibbolethUser s = (ShibbolethUser) user;
 
             query = "INSERT INTO shibusers (username, type, account_link, account_creation "
                     + "eduPersonScopedAffiliation, cn, mail) "
@@ -237,7 +235,7 @@
             np.addValue("edu", s.getAffiliation());
             np.addValue("mail", s.getMail());
             np.addValue("type", user.getType());
-            np.addValue("cn", s.getCn());
+            np.addValue("cn", s.getCommonName());
             np.addValue("acr", System.currentTimeMillis());
 
             //todo: deprecate
diff --git a/full/src/main/java/de/ids_mannheim/korap/handlers/RowMapperFactory.java b/full/src/main/java/de/ids_mannheim/korap/handlers/RowMapperFactory.java
index d18ea69..39b7efa 100644
--- a/full/src/main/java/de/ids_mannheim/korap/handlers/RowMapperFactory.java
+++ b/full/src/main/java/de/ids_mannheim/korap/handlers/RowMapperFactory.java
@@ -6,7 +6,7 @@
 import de.ids_mannheim.korap.resources.ResourceFactory;
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.user.KorAPUser;
-import de.ids_mannheim.korap.user.ShibUser;
+import de.ids_mannheim.korap.user.ShibbolethUser;
 import de.ids_mannheim.korap.user.User;
 import org.springframework.jdbc.core.RowMapper;
 
@@ -39,9 +39,9 @@
                 case 0:
                     user = getKorAP(rs);
                     break;
-                case 1:
-                    user = getShib(rs);
-                    break;
+//                case 1:
+//                    user = getShib(rs);
+//                    break;
                 default:
                     user = User.UserFactory.getDemoUser();
                     user.setId(rs.getInt("id"));
@@ -71,13 +71,13 @@
         }
 
 
-        private ShibUser getShib (ResultSet rs) throws SQLException {
-            ShibUser user = User.UserFactory.getShibInstance(
-                    rs.getString(Attributes.USERNAME),
-                    rs.getString(Attributes.MAIL), rs.getString(Attributes.CN));
-            user.setId(rs.getInt(Attributes.ID));
-            return user;
-        }
+//        private ShibbolethUser getShib (ResultSet rs) throws SQLException {
+//            ShibbolethUser user = User.UserFactory.getShibInstance(
+//                    rs.getString(Attributes.USERNAME),
+//                    rs.getString(Attributes.MAIL), rs.getString(Attributes.CN));
+//            user.setId(rs.getInt(Attributes.ID));
+//            return user;
+//        }
 
     }
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth/ClientDeregistrationValidator.java b/full/src/main/java/de/ids_mannheim/korap/oauth/ClientDeregistrationValidator.java
new file mode 100644
index 0000000..60525b0
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth/ClientDeregistrationValidator.java
@@ -0,0 +1,23 @@
+package de.ids_mannheim.korap.oauth;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.oltu.oauth2.common.OAuth;
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.utils.OAuthUtils;
+import org.apache.oltu.oauth2.common.validators.AbstractValidator;
+
+public class ClientDeregistrationValidator extends AbstractValidator<HttpServletRequest>{
+
+    public ClientDeregistrationValidator () {
+        enforceClientAuthentication = true;
+    }
+    
+    @Override
+    public void validateMethod (HttpServletRequest request)
+            throws OAuthProblemException {
+        if (!request.getMethod().equals(OAuth.HttpMethod.DELETE)) {
+            throw OAuthUtils.handleOAuthProblemException("Method not set to DELETE.");
+        }
+    }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth/OAuthDeregisterClientRequest.java b/full/src/main/java/de/ids_mannheim/korap/oauth/OAuthDeregisterClientRequest.java
new file mode 100644
index 0000000..88ae668
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth/OAuthDeregisterClientRequest.java
@@ -0,0 +1,27 @@
+package de.ids_mannheim.korap.oauth;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.oltu.oauth2.as.request.OAuthRequest;
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+import org.apache.oltu.oauth2.common.utils.OAuthUtils;
+import org.apache.oltu.oauth2.common.validators.OAuthValidator;
+
+public class OAuthDeregisterClientRequest extends OAuthRequest {
+
+    public OAuthDeregisterClientRequest (HttpServletRequest request)
+            throws OAuthSystemException, OAuthProblemException {
+        super(request);
+    }
+
+    @Override
+    protected OAuthValidator<HttpServletRequest> initValidator ()
+            throws OAuthProblemException, OAuthSystemException {
+        validators.put("client_deregistration",
+                ClientDeregistrationValidator.class);
+        final Class<? extends OAuthValidator<HttpServletRequest>> clazz =
+                validators.get("client_deregistration");
+        return OAuthUtils.instantiateClass(clazz);
+    }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2AuthorizationService.java
new file mode 100644
index 0000000..751c7d2
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2AuthorizationService.java
@@ -0,0 +1,118 @@
+package de.ids_mannheim.korap.service;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.oltu.oauth2.as.issuer.OAuthIssuer;
+import org.apache.oltu.oauth2.as.request.OAuthAuthzRequest;
+import org.apache.oltu.oauth2.as.response.OAuthASResponse;
+import org.apache.oltu.oauth2.common.error.OAuthError;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+import org.apache.oltu.oauth2.common.message.OAuthResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.sun.jersey.api.client.ClientResponse.Status;
+
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.entity.OAuth2Client;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+
+@Service
+public class OAuth2AuthorizationService {
+
+    @Autowired
+    private OAuth2ClientService clientService;
+    @Autowired
+    private OAuth2Service auth2Service;
+    @Autowired
+    private OAuthIssuer oauthIssuer;
+
+    public OAuthResponse requestAuthorizationCode (HttpServletRequest request,
+            OAuthAuthzRequest authzRequest, String authorization)
+            throws KustvaktException, OAuthSystemException {
+
+        String responseType = authzRequest.getResponseType();
+        if (responseType == null || responseType.isEmpty()) {
+            throw new KustvaktException(StatusCodes.MISSING_PARAMETER,
+                    "response_type is missing.",
+                    OAuthError.CodeResponse.INVALID_REQUEST);
+        }
+
+        OAuth2Client client;
+        try {
+            client = clientService.authenticateClient(
+                    authzRequest.getClientId(), authzRequest.getClientSecret());
+        }
+        catch (KustvaktException e) {
+            e.setEntity(OAuthError.CodeResponse.UNAUTHORIZED_CLIENT);
+            throw e;
+        }
+
+        String redirectUri = authzRequest.getRedirectURI();
+        boolean hasRedirectUri = hasRedirectUri(redirectUri);
+        redirectUri = verifyRedirectUri(client, hasRedirectUri, redirectUri);
+
+        auth2Service.authenticateUser(
+                authzRequest.getParam(Attributes.USERNAME),
+                authzRequest.getParam(Attributes.PASSWORD),
+                authzRequest.getScopes());
+
+        return OAuthASResponse
+                .authorizationResponse(request, Status.FOUND.getStatusCode())
+                .setCode(oauthIssuer.authorizationCode()).location(redirectUri)
+                .buildQueryMessage();
+    }
+
+
+    private boolean hasRedirectUri (String redirectURI) {
+        if (redirectURI != null && !redirectURI.isEmpty()) {
+            return true;
+        }
+        return false;
+    }
+
+    /** If the request contains a redirect_uri parameter, the server must confirm 
+     *  it is a valid redirect URI. 
+     *  
+     *  If there is no redirect_uri parameter in the request, and only one URI 
+     *  was registered, the server uses the redirect URL that was previously 
+     *  registered. 
+     *  
+     *  If no redirect URL has been registered, this is an error.
+     *  
+     * @param client an OAuth2Client
+     * @param hasRedirectUri true if request contains redirect_uri, false otherwise
+     * @param redirectUri the redirect_uri value
+     * @return a client's redirect URI
+     * @throws KustvaktException
+     */
+    private String verifyRedirectUri (OAuth2Client client,
+            boolean hasRedirectUri, String redirectUri)
+            throws KustvaktException {
+
+        String registeredUri = client.getRedirectURI();
+        if (hasRedirectUri) {
+            // check if the redirect URI the same as that in DB
+            if (!redirectUri.equals(registeredUri)) {
+                throw new KustvaktException(StatusCodes.INVALID_REDIRECT_URI,
+                        redirectUri + " is unknown",
+                        OAuthError.CodeResponse.INVALID_REQUEST);
+            }
+        }
+        else {
+            // check if there is a redirect URI in the DB
+            // This should not happened as it is required in client registration!
+            if (registeredUri != null && !registeredUri.isEmpty()) {
+                redirectUri = registeredUri;
+            }
+            else {
+                throw new KustvaktException(StatusCodes.MISSING_PARAMETER,
+                        "redirect_uri is required",
+                        OAuthError.CodeResponse.INVALID_REQUEST);
+            }
+        }
+
+        return redirectUri;
+    }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/OAuth2ClientService.java b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2ClientService.java
index 4072cf7..1089c45 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/OAuth2ClientService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2ClientService.java
@@ -8,14 +8,12 @@
 
 import org.apache.commons.validator.routines.UrlValidator;
 import org.apache.log4j.Logger;
+import org.apache.oltu.oauth2.as.request.OAuthRequest;
 import org.apache.oltu.oauth2.common.error.OAuthError;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import de.ids_mannheim.korap.authentication.http.AuthorizationData;
-import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
 import de.ids_mannheim.korap.config.FullConfiguration;
-import de.ids_mannheim.korap.constant.AuthenticationScheme;
 import de.ids_mannheim.korap.constant.OAuth2ClientType;
 import de.ids_mannheim.korap.dao.AdminDao;
 import de.ids_mannheim.korap.dao.OAuth2ClientDao;
@@ -57,8 +55,6 @@
     @Autowired
     private EncryptionIface encryption;
     @Autowired
-    private HttpAuthorizationHandler authorizationHandler;
-    @Autowired
     private FullConfiguration config;
 
     public OAuth2ClientDto registerClient (OAuth2ClientJson clientJson,
@@ -101,7 +97,7 @@
             clientDao.registerClient(id, secretHashcode, clientJson.getName(),
                     clientJson.getType(), isNative, clientJson.getUrl(),
                     clientJson.getUrl().hashCode(), clientJson.getRedirectURI(),
-                    registeredBy);
+                    registeredBy, clientJson.getDescription());
         }
         catch (Exception e) {
             Throwable cause = e;
@@ -140,7 +136,8 @@
         }
         catch (URISyntaxException e) {
             throw new KustvaktException(StatusCodes.INVALID_ARGUMENT,
-                    "Invalid redirectURI: "+e.getMessage(), OAuthError.TokenResponse.INVALID_REQUEST);
+                    "Invalid redirectURI: " + e.getMessage(),
+                    OAuthError.TokenResponse.INVALID_REQUEST);
         }
         boolean isNative =
                 urlHost.equals(nativeHost) && uriHost.equals(nativeHost);
@@ -152,7 +149,7 @@
     public void deregisterPublicClient (String clientId, String username)
             throws KustvaktException {
 
-        OAuth2Client client = retrieveClientById(clientId);
+        OAuth2Client client = clientDao.retrieveClientById(clientId);
         if (adminDao.isAdmin(username)) {
             clientDao.deregisterClient(client);
         }
@@ -174,98 +171,46 @@
     }
 
 
-    public void deregisterConfidentialClient (String authorization,
-            String clientId) throws KustvaktException {
-        OAuth2Client client =
-                authenticateClientByBasicAuthorization(authorization, clientId);
+    public void deregisterConfidentialClient (OAuthRequest oAuthRequest)
+            throws KustvaktException {
+
+        OAuth2Client client = authenticateClient(oAuthRequest.getClientId(),
+                oAuthRequest.getClientSecret());
         clientDao.deregisterClient(client);
     }
 
-    public OAuth2Client authenticateClient (String authorization,
-            String clientId) throws KustvaktException {
-        OAuth2Client client;
-        if (authorization == null || authorization.isEmpty()) {
-            client = authenticateClientById(clientId);
-            if (client.getType().equals(OAuth2ClientType.CONFIDENTIAL)) {
-                throw new KustvaktException(
-                        StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                        "Client authentication using authorization header is required.",
-                        OAuthError.TokenResponse.INVALID_CLIENT);
-            }
-        }
-        else {
-            client = authenticateClientByBasicAuthorization(authorization,
-                    clientId);
-        }
-        return client;
-    }
+    public OAuth2Client authenticateClient (String clientId,
+            String clientSecret) throws KustvaktException {
 
-    public OAuth2Client authenticateClientById (String clientId)
-            throws KustvaktException {
-        if (clientId == null || clientId.equals("null") || clientId.isEmpty()) {
+        if (clientId == null || clientId.isEmpty()) {
             throw new KustvaktException(
                     StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                    "client_id is missing",
-                    OAuthError.TokenResponse.INVALID_REQUEST);
+                    "Missing parameters: client id", "invalid_request");
         }
-        else {
-            return retrieveClientById(clientId);
-        }
-    }
 
-    public OAuth2Client authenticateClientByBasicAuthorization (
-            String authorization, String clientId) throws KustvaktException {
-
-        if (authorization == null || authorization.isEmpty()) {
-            throw new KustvaktException(
-                    StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                    "Authorization header is not found.",
-                    OAuthError.TokenResponse.INVALID_CLIENT);
-        }
-        else {
-            AuthorizationData authData = authorizationHandler
-                    .parseAuthorizationHeaderValue(authorization);
-            if (authData.getAuthenticationScheme()
-                    .equals(AuthenticationScheme.BASIC)) {
-                authorizationHandler.parseBasicToken(authData);
-                return verifyClientCredentials(clientId, authData);
-            }
-            else {
+        OAuth2Client client = clientDao.retrieveClientById(clientId);
+        if (clientSecret == null || clientSecret.isEmpty()) {
+            if (client.getSecret() != null
+                    || client.getType().equals(OAuth2ClientType.CONFIDENTIAL)) {
                 throw new KustvaktException(
                         StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                        "Client authentication with " + authData
-                                .getAuthenticationScheme().displayName()
-                                + "is not supported",
-                        "invalid_client");
+                        "Missing parameters: client_secret", "invalid_request");
+            }
+            else
+                return client;
+        }
+        else {
+            if (client.getSecret() != null) {
+                if (encryption.checkHash(clientSecret, client.getSecret(),
+                        config.getPasscodeSaltField())) {
+                    return client;
+                }
             }
         }
+
+        throw new KustvaktException(StatusCodes.CLIENT_AUTHENTICATION_FAILED,
+                "Invalid client credentials",
+                OAuthError.TokenResponse.INVALID_CLIENT);
     }
 
-    private OAuth2Client verifyClientCredentials (String clientId,
-            AuthorizationData authData) throws KustvaktException {
-
-        OAuth2Client client = retrieveClientById(authData.getUsername());
-        // EM: not sure if this is necessary
-        if (clientId != null && !clientId.isEmpty()) {
-            if (!client.getId().equals(clientId)) {
-                throw new KustvaktException(
-                        StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                        "Invalid client credentials.",
-                        OAuthError.TokenResponse.INVALID_CLIENT);
-            }
-        }
-        if (!encryption.checkHash(authData.getPassword(), client.getSecret(),
-                config.getPasscodeSaltField())) {
-            throw new KustvaktException(
-                    StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                    "Invalid client credentials.",
-                    OAuthError.TokenResponse.INVALID_CLIENT);
-        }
-        return client;
-    }
-
-    public OAuth2Client retrieveClientById (String clientId)
-            throws KustvaktException {
-        return clientDao.retrieveClientById(clientId);
-    }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/OAuth2Service.java b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2Service.java
index 4ec5dac..9e8092b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/OAuth2Service.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/OAuth2Service.java
@@ -4,15 +4,12 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.Response.Status;
 
-import org.apache.oltu.oauth2.as.issuer.MD5Generator;
 import org.apache.oltu.oauth2.as.issuer.OAuthIssuer;
-import org.apache.oltu.oauth2.as.issuer.OAuthIssuerImpl;
-import org.apache.oltu.oauth2.as.request.OAuthTokenRequest;
+import org.apache.oltu.oauth2.as.request.AbstractOAuthTokenRequest;
 import org.apache.oltu.oauth2.as.response.OAuthASResponse;
 import org.apache.oltu.oauth2.common.error.OAuthError;
-import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 import org.apache.oltu.oauth2.common.message.OAuthResponse;
 import org.apache.oltu.oauth2.common.message.types.GrantType;
@@ -36,12 +33,27 @@
     private FullConfiguration config;
     @Autowired
     private AuthenticationManagerIface authenticationManager;
+    @Autowired
+    private OAuthIssuer oauthIssuer;
 
     /** 
-     *  RFC 6749:
+     * OAuth2 describes various ways for requesting an access token. Kustvakt 
+     * supports:
+     * <ul>
+     * <li> Authorization code grant: obtains authorization from a third party
+     * application.
+     * </li>
+     * <li> Resource owner password grant: strictly for clients that are parts 
+     *   of KorAP. Clients use user credentials, e.g. Kalamar (front-end) with 
+     *   login form. 
+     * </li>
+     * <li> Client credentials grant: strictly for clients that are parts 
+     *   of KorAP. Clients access their own resources, not on behalf of a 
+     *   user.
+     * </li>
+     * </ul>  
      *  
-     *  If the client type is confidential or the client was issued client
-     *  credentials, the client MUST authenticate with the authorization server.
+     *  
      * @param request 
      *  
      * @param oAuthRequest
@@ -50,24 +62,25 @@
      * @throws KustvaktException
      * @throws OAuthSystemException
      */
-    public OAuthResponse requestAccessToken (OAuthTokenRequest oAuthRequest,
-            String authorization)
+    public OAuthResponse requestAccessToken (
+            AbstractOAuthTokenRequest oAuthRequest)
             throws KustvaktException, OAuthSystemException {
 
         String grantType = oAuthRequest.getGrantType();
 
         if (grantType.equals(GrantType.AUTHORIZATION_CODE.toString())) {
-            return requestAccessTokenWithAuthorizationCode(authorization,
+            return requestAccessTokenWithAuthorizationCode(
                     oAuthRequest.getCode(), oAuthRequest.getRedirectURI(),
-                    oAuthRequest.getClientId());
+                    oAuthRequest.getClientId(), oAuthRequest.getClientSecret());
         }
         else if (grantType.equals(GrantType.PASSWORD.toString())) {
-            return requestAccessTokenWithPassword(authorization,
-                    oAuthRequest.getUsername(), oAuthRequest.getPassword(),
-                    oAuthRequest.getScopes(), oAuthRequest.getClientId());
+            return requestAccessTokenWithPassword(oAuthRequest.getUsername(),
+                    oAuthRequest.getPassword(), oAuthRequest.getScopes(),
+                    oAuthRequest.getClientId(), oAuthRequest.getClientSecret());
         }
         else if (grantType.equals(GrantType.CLIENT_CREDENTIALS.toString())) {
-            return requestAccessTokenWithClientCredentials(authorization,
+            return requestAccessTokenWithClientCredentials(
+                    oAuthRequest.getClientId(), oAuthRequest.getClientSecret(),
                     oAuthRequest.getScopes());
         }
         else {
@@ -78,25 +91,31 @@
 
     }
 
-    /** Confidential clients must authenticate
+    /**
+     * RFC 6749: 
+     *  If the client type is confidential or the client was issued client
+     *  credentials, the client MUST authenticate with the authorization server.
      * 
-     * @param authorization
      * @param authorizationCode
-     * @param redirectURI
+     * @param redirectURI required if included in the authorization request
      * @param clientId required if there is no authorization header
+     * @param clientSecret clilent_secret, required if client_secret was issued 
+     *  for the client in client registration.
      * @return
      * @throws OAuthSystemException
      * @throws KustvaktException
-     * @throws OAuthProblemException 
      */
     private OAuthResponse requestAccessTokenWithAuthorizationCode (
-            String authorization, String authorizationCode, String redirectURI,
-            String clientId) throws KustvaktException {
-        OAuth2Client client =
-                clientService.authenticateClient(authorization, clientId);
+            String authorizationCode, String redirectURI, String clientId,
+            String clientSecret)
+            throws KustvaktException, OAuthSystemException {
+
+        clientService.authenticateClient(clientId, clientSecret);
 
         // TODO
-        return null;
+        // check authorization code
+        // check redirectURI
+        return createsAccessTokenResponse();
     }
 
 
@@ -104,30 +123,32 @@
     /**  Third party apps must not be allowed to use password grant.
      * MH: password grant is only allowed for trusted clients (korap frontend)
      *  
-     * A similar rule to that of authorization code grant is additionally 
-     * applied, namely client_id is required when authorization header is not 
-     * available.
+     * According to RFC 6749, client authentication is only required for 
+     * confidential clients and whenever client credentials are provided.
+     * Moreover, client_id is optional for password grant, but without it, 
+     * the authentication server cannot check the client type. 
      * 
-     * According to RFC 6749, client_id is optional for password grant, 
-     * but without it, server would not be able to check the client 
-     * type, thus cannot make sure that confidential clients authenticate. 
+     * To make sure that confidential clients authenticate, client_id is made 
+     * required (similar to authorization code grant).
      * 
-     * @param authorization
-     * @param username
-     * @param password
+     * 
+     * @param username username, required
+     * @param password user password, required
      * @param scopes
-     * @param clientId
+     * @param clientId client_id, required
+     * @param clientSecret clilent_secret, required if client_secret was issued 
+     *  for the client in client registration.
      * @return
      * @throws KustvaktException
-     * @throws OAuthSystemException 
+     * @throws OAuthSystemException
      */
-    private OAuthResponse requestAccessTokenWithPassword (String authorization,
-            String username, String password, Set<String> scopes,
-            String clientId) throws KustvaktException, OAuthSystemException {
+    private OAuthResponse requestAccessTokenWithPassword (String username,
+            String password, Set<String> scopes, String clientId,
+            String clientSecret)
+            throws KustvaktException, OAuthSystemException {
 
         OAuth2Client client =
-                clientService.authenticateClient(authorization, clientId);
-
+                clientService.authenticateClient(clientId, clientSecret);
         if (!client.isNative()) {
             throw new KustvaktException(StatusCodes.CLIENT_AUTHORIZATION_FAILED,
                     "Password grant is not allowed for third party clients",
@@ -138,7 +159,7 @@
         return createsAccessTokenResponse();
     }
 
-    private void authenticateUser (String username, String password,
+    public void authenticateUser (String username, String password,
             Set<String> scopes) throws KustvaktException {
         if (username == null || username.isEmpty()) {
             throw new KustvaktException(StatusCodes.MISSING_PARAMETER,
@@ -162,50 +183,46 @@
 
     /** Clients must authenticate
      * 
-     * @param authorization
+     * @param clientId client_id parameter, required
+     * @param clientSecret client_secret parameter, required
      * @param scopes
-     * @param request 
      * @return
-     * @throws KustvaktException 
-     * @throws OAuthSystemException 
+     * @throws KustvaktException
+     * @throws OAuthSystemException
      */
     private OAuthResponse requestAccessTokenWithClientCredentials (
-            String authorization, Set<String> scopes)
+            String clientId, String clientSecret, Set<String> scopes)
             throws KustvaktException, OAuthSystemException {
 
-        if (authorization == null || authorization.isEmpty()) {
+        if (clientSecret == null || clientSecret.isEmpty()) {
             throw new KustvaktException(
                     StatusCodes.CLIENT_AUTHENTICATION_FAILED,
-                    "Client authentication using authorization header is required.",
-                    OAuthError.TokenResponse.INVALID_CLIENT);
+                    "Missing parameters: client_secret", "invalid_request");
         }
-        else {
-            clientService.authenticateClientByBasicAuthorization(authorization,
-                    null);
-            return createsAccessTokenResponse();
-        }
+
+        clientService.authenticateClient(clientId, clientSecret);
+        return createsAccessTokenResponse();
     }
 
 
-    /**
-     * @param request  
-     * @return 
-     * @throws OAuthSystemException 
+
+    /** Creates an OAuthResponse containing an access token and a refresh token 
+     *  with type Bearer.
      * 
+     * @return an OAuthResponse containing an access token
+     * @throws OAuthSystemException
      */
     private OAuthResponse createsAccessTokenResponse ()
             throws OAuthSystemException {
-        OAuthIssuer oauthIssuerImpl = new OAuthIssuerImpl(new MD5Generator());
-        OAuthResponse r = null;
+        String accessToken = oauthIssuer.accessToken();
+        String refreshToken = oauthIssuer.refreshToken();
 
-        String accessToken = oauthIssuerImpl.accessToken();
-        String refreshToken = oauthIssuerImpl.refreshToken();
-
-        r = OAuthASResponse.tokenResponse(HttpServletResponse.SC_OK)
-                .setAccessToken(accessToken)
-                .setTokenType(TokenType.BEARER.toString())
-                .setExpiresIn(String.valueOf(config.getTokenTTL()))
-                .setRefreshToken(refreshToken).buildJSONMessage();
+        OAuthResponse r =
+                OAuthASResponse.tokenResponse(Status.OK.getStatusCode())
+                        .setAccessToken(accessToken)
+                        .setTokenType(TokenType.BEARER.toString())
+                        .setExpiresIn(String.valueOf(config.getTokenTTL()))
+                        .setRefreshToken(refreshToken).buildJSONMessage();
         // scope
         return r;
     }
diff --git a/full/src/main/java/de/ids_mannheim/korap/user/ShibbolethUser.java b/full/src/main/java/de/ids_mannheim/korap/user/ShibbolethUser.java
new file mode 100644
index 0000000..80d01f5
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/user/ShibbolethUser.java
@@ -0,0 +1,90 @@
+package de.ids_mannheim.korap.user;
+
+/**
+ * User: hanl
+ * Date: 10/16/13
+ * Time: 2:02 PM
+ * 
+ * @author margaretha
+ * @last-update 18/04/2018
+ */
+public class ShibbolethUser extends User {
+
+    /**
+     * Auto generated serial Id
+     */
+    private static final long serialVersionUID = -4008236368010397075L;
+    private String mail;
+    private String affiliation;
+    // EM: common name
+    private String commonName;
+
+
+    protected ShibbolethUser () {
+        super(1);
+    }
+
+
+    private ShibbolethUser (String eduPersonID, String mail, String cn,
+                      String affiliation) {
+        this(eduPersonID);
+        this.setUsername(eduPersonID);
+        this.setMail(mail);
+        this.setAffiliation(affiliation);
+        this.setCommonName(cn);
+    }
+
+
+    public ShibbolethUser (String username) {
+        super(username, 1);
+
+    }
+
+
+    @Override
+    public String toString () {
+        final StringBuffer sb = new StringBuffer("ShibbolethUser{");
+        sb.append(", mail='").append(getMail()).append('\'');
+        sb.append(", affiliation='").append(getAffiliation()).append('\'');
+        sb.append(", common-name='").append(getCommonName()).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+
+    @Override
+    protected User clone () {
+        return new ShibbolethUser(this.getUsername(), this.getMail(), this.getCommonName(),
+                this.getAffiliation());
+    }
+
+
+    public String getMail () {
+        return mail;
+    }
+
+
+    public void setMail (String mail) {
+        this.mail = mail;
+    }
+
+
+    public String getAffiliation () {
+        return affiliation;
+    }
+
+
+    public void setAffiliation (String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+
+    public String getCommonName () {
+        return commonName;
+    }
+
+
+    public void setCommonName (String commonName) {
+        this.commonName = commonName;
+    }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/OAuth2ResponseHandler.java b/full/src/main/java/de/ids_mannheim/korap/web/OAuth2ResponseHandler.java
index 5df68b2..0d31236 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/OAuth2ResponseHandler.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/OAuth2ResponseHandler.java
@@ -1,5 +1,8 @@
 package de.ids_mannheim.korap.web;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
@@ -92,7 +95,9 @@
         OAuthResponse oAuthResponse = null;
         String errorCode = e.getEntity();
         try {
-            if (errorCode.equals(OAuthError.TokenResponse.INVALID_CLIENT)) {
+            if (errorCode.equals(OAuthError.TokenResponse.INVALID_CLIENT)
+                    || errorCode.equals(
+                            OAuthError.TokenResponse.UNAUTHORIZED_CLIENT)) {
                 oAuthResponse = createOAuthResponse(e,
                         Status.UNAUTHORIZED.getStatusCode());
             }
@@ -100,8 +105,6 @@
                     || errorCode
                             .equals(OAuthError.TokenResponse.INVALID_REQUEST)
                     || errorCode.equals(OAuthError.TokenResponse.INVALID_SCOPE)
-                    || errorCode
-                            .equals(OAuthError.TokenResponse.UNAUTHORIZED_CLIENT)
                     || errorCode.equals(
                             OAuthError.TokenResponse.UNSUPPORTED_GRANT_TYPE)) {
                 oAuthResponse = createOAuthResponse(e,
@@ -142,4 +145,16 @@
         }
         return builder.build();
     }
+
+    public Response sendRedirect (String locationUri) throws KustvaktException {
+        try {
+            ResponseBuilder builder =
+                    Response.temporaryRedirect(new URI(locationUri));
+            return builder.build();
+        }
+        catch (URISyntaxException e) {
+            throw new KustvaktException(StatusCodes.INVALID_ARGUMENT,
+                    e.getMessage(), OAuthError.CodeResponse.INVALID_REQUEST);
+        }
+    }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
index ece03f2..b0699b1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
@@ -2,6 +2,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
 import javax.ws.rs.HeaderParam;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -10,16 +11,20 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
 
+import org.apache.oltu.oauth2.as.request.AbstractOAuthTokenRequest;
+import org.apache.oltu.oauth2.as.request.OAuthAuthzRequest;
 import org.apache.oltu.oauth2.as.request.OAuthTokenRequest;
+import org.apache.oltu.oauth2.as.request.OAuthUnauthenticatedTokenRequest;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 import org.apache.oltu.oauth2.common.message.OAuthResponse;
+import org.apache.oltu.oauth2.common.message.types.GrantType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 
 import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.service.OAuth2AuthorizationService;
 import de.ids_mannheim.korap.service.OAuth2Service;
 import de.ids_mannheim.korap.web.OAuth2ResponseHandler;
 import de.ids_mannheim.korap.web.utils.FormRequestWrapper;
@@ -31,7 +36,50 @@
     @Autowired
     private OAuth2ResponseHandler responseHandler;
     @Autowired
-    private OAuth2Service oauth2Service;
+    private OAuth2Service oAuth2Service;
+    @Autowired
+    private OAuth2AuthorizationService authorizationService;
+
+    /** Kustvakt supports authorization only with Kalamar as the authorization 
+     * web-frontend or user interface. Thus authorization code request requires
+     * user credentials in the request body, similar to access token request in
+     * resource owner password grant request. 
+     * 
+     * @param request
+     * @param authorization
+     * @param form
+     * @return
+     */
+    @POST
+    @Path("authorize")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
+    public Response requestAuthorizationCode (
+            @Context HttpServletRequest request,
+            @HeaderParam("Authorization") String authorization,
+            MultivaluedMap<String, String> form) {
+
+        try {
+            HttpServletRequest requestWithForm =
+                    new FormRequestWrapper(request, form);
+            OAuthAuthzRequest authzRequest =
+                    new OAuthAuthzRequest(requestWithForm);
+            OAuthResponse authResponse =
+                    authorizationService.requestAuthorizationCode(
+                            requestWithForm, authzRequest, authorization);
+            return responseHandler.sendRedirect(authResponse.getLocationUri());
+        }
+        catch (OAuthSystemException e) {
+            throw responseHandler.throwit(e);
+        }
+        catch (OAuthProblemException e) {
+            throw responseHandler.throwit(e);
+        }
+        catch (KustvaktException e) {
+            throw responseHandler.throwit(e);
+        }
+    }
+
 
     /** Grants a client an access token, namely a string used in authenticated 
      *  requests representing user authorization for the client to access user 
@@ -49,27 +97,32 @@
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
     public Response requestAccessToken (@Context HttpServletRequest request,
-            @HeaderParam("Authorization") String authorization,
+            @FormParam("grant_type") String grantType,
             MultivaluedMap<String, String> form) {
 
         try {
-            OAuthTokenRequest oAuthRequest = null;
-            try {
+            AbstractOAuthTokenRequest oAuthRequest = null;
+            if (grantType != null && !grantType.isEmpty() && grantType
+                    .equals(GrantType.CLIENT_CREDENTIALS.toString())) {
                 oAuthRequest = new OAuthTokenRequest(
                         new FormRequestWrapper(request, form));
             }
-            catch (OAuthProblemException e) {
-                throw responseHandler.throwit(e);
+            else {
+                oAuthRequest = new OAuthUnauthenticatedTokenRequest(
+                        new FormRequestWrapper(request, form));
             }
 
-            OAuthResponse oAuthResponse = oauth2Service
-                    .requestAccessToken(oAuthRequest, authorization);
+            OAuthResponse oAuthResponse =
+                    oAuth2Service.requestAccessToken(oAuthRequest);
 
             return responseHandler.createResponse(oAuthResponse);
         }
         catch (KustvaktException e) {
             throw responseHandler.throwit(e);
         }
+        catch (OAuthProblemException e) {
+            throw responseHandler.throwit(e);
+        }
         catch (OAuthSystemException e) {
             throw responseHandler.throwit(e);
         }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index 9c4834c..39b93b7 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -1,17 +1,21 @@
 package de.ids_mannheim.korap.web.controller;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.FormParam;
-import javax.ws.rs.HeaderParam;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.SecurityContext;
 
+import org.apache.oltu.oauth2.as.request.OAuthRequest;
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 
@@ -19,12 +23,14 @@
 
 import de.ids_mannheim.korap.dto.OAuth2ClientDto;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.oauth.OAuthDeregisterClientRequest;
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.service.OAuth2ClientService;
 import de.ids_mannheim.korap.web.OAuth2ResponseHandler;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.input.OAuth2ClientJson;
+import de.ids_mannheim.korap.web.utils.FormRequestWrapper;
 
 
 /** Defines controllers for OAuth2 clients, namely applications attempting
@@ -111,14 +117,25 @@
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     public Response deregisterConfidentialClient (
             @Context SecurityContext securityContext,
-            @HeaderParam("Authorization") String authorization,
-            @FormParam("client_id") String clientId) {
+            //            @HeaderParam("Authorization") String authorization,
+            //            @FormParam("client_id") String clientId
+            @Context HttpServletRequest request,
+            MultivaluedMap<String, String> form) {
         try {
-            clientService.deregisterConfidentialClient(authorization, clientId);
+            OAuthRequest oAuthRequest = new OAuthDeregisterClientRequest(
+                    new FormRequestWrapper(request, form));
+
+            clientService.deregisterConfidentialClient(oAuthRequest);
             return Response.ok().build();
         }
         catch (KustvaktException e) {
             throw responseHandler.throwit(e);
         }
+        catch (OAuthSystemException e) {
+            throw responseHandler.throwit(e);
+        }
+        catch (OAuthProblemException e) {
+            throw responseHandler.throwit(e);
+        }
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
index e64bcfe..c6a3a97 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
@@ -233,7 +233,7 @@
      * @param pageLength number of results per page
      * @param pageIndex
      * @param startPage
-     * @param cq collection query
+     * @param cq corpus query
      * @return
      */
     // ref query parameter removed!
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/input/OAuth2ClientJson.java b/full/src/main/java/de/ids_mannheim/korap/web/input/OAuth2ClientJson.java
index 2dc4034..99705e8 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/input/OAuth2ClientJson.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/input/OAuth2ClientJson.java
@@ -20,4 +20,5 @@
     // redirect URI determines where the OAuth 2.0 service will return the user to 
     // after they have authorized a client. It must be https.
     private String redirectURI;
+    private String description;
 }
diff --git a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
index 3cc2999..f9cd171 100644
--- a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
+++ b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
@@ -2,21 +2,33 @@
 
 -- plain secret value is "secret"
 INSERT INTO oauth2_client(id,name,secret,type,native, url,url_hashcode,
-  redirect_uri,registered_by) 
-VALUES ("fCBbQkAyYzI4NzUxMg==","test confidential client",
+  redirect_uri,registered_by, description) 
+VALUES ("fCBbQkAyYzI4NzUxMg","test confidential client",
   "$2a$08$vi1FbuN3p6GcI1tSxMAoeuIYL8Yw3j6A8wJthaN8ZboVnrQaTwLPq",
   "CONFIDENTIAL", 1, "http://korap.ids-mannheim.de/confidential", 2087150261, 
-  "https://korap.ids-mannheim.de/confidential/redirect", "system");
+  "https://korap.ids-mannheim.de/confidential/redirect", "system",
+  "This is a test native confidential client.");
+  
+-- plain secret value is "secret"
+INSERT INTO oauth2_client(id,name,secret,type,native, url,url_hashcode,
+  redirect_uri,registered_by, description) 
+VALUES ("9aHsGW6QflV13ixNpez","test non native confidential client",
+  "$2a$08$vi1FbuN3p6GcI1tSxMAoeuIYL8Yw3j6A8wJthaN8ZboVnrQaTwLPq",
+  "CONFIDENTIAL", 0, "http://third.party.com/confidential", 1712550103, 
+  "https://third.party.com/confidential/redirect", "system",
+  "This is a test nonnative confidential client.");
   
 INSERT INTO oauth2_client(id,name,secret,type,url,url_hashcode,
-  redirect_uri, registered_by) 
-VALUES ("8bIDtZnH6NvRkW2Fq==","third party client",null,
+  redirect_uri, registered_by, description) 
+VALUES ("8bIDtZnH6NvRkW2Fq","third party client",null,
   "PUBLIC","http://third.party.client.com", -2137275617,
-  "https://third.party.client.com/redirect","system");
+  "https://third.party.client.com/redirect","system",
+  "This is a test nonnative public client.");
   
 INSERT INTO oauth2_client(id,name,secret,type,native,url,url_hashcode,
-  redirect_uri, registered_by) 
+  redirect_uri, registered_by, description) 
 VALUES ("iBr3LsTCxOj7D2o0A5m","test public client",null,
   "PUBLIC", 1, "http://korap.ids-mannheim.de/public", 1360724310,
-  "https://korap.ids-mannheim.de/public/redirect","system"); 
+  "https://korap.ids-mannheim.de/public/redirect","system", 
+  "This is a test native public client."); 
   
\ No newline at end of file
diff --git a/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql b/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
index c55ef43..81b0d92 100644
--- a/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
@@ -10,7 +10,8 @@
 	url TEXT NOT NULL,
 	url_hashcode UNIQUE INTEGER NOT NULL,
 	redirect_uri TEXT NOT NULL,
-	registered_by VARCHAR(100) NOT NULL
+	registered_by VARCHAR(100) NOT NULL,
+	description VARCHAR(250) NOT NULL
 );
 
 --
diff --git a/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql b/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
index 89014f2..c055f4d 100644
--- a/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
@@ -10,7 +10,8 @@
 	url TEXT NOT NULL,
 	url_hashcode INTEGER NOT NULL,
 	redirect_uri TEXT NOT NULL,
-	registered_by VARCHAR(100) NOT NULL
+	registered_by VARCHAR(100) NOT NULL,
+	description VARCHAR(250) NOT NULL
 );
 
 CREATE UNIQUE INDEX client_id_index on oauth2_client(id);
diff --git a/full/src/main/resources/default-config.xml b/full/src/main/resources/default-config.xml
index feef295..57f65ae 100644
--- a/full/src/main/resources/default-config.xml
+++ b/full/src/main/resources/default-config.xml
@@ -184,10 +184,17 @@
 	<bean id="kustvaktResponseHandler" class="de.ids_mannheim.korap.web.KustvaktExceptionHandler">
 		<constructor-arg index="0" name="iface" ref="kustvakt_auditing" />
 	</bean>
-	<bean id="oauth2_exception" class="de.ids_mannheim.korap.web.OAuth2ExceptionHandler">
+	
+	<!-- OAuth -->
+	<bean id="oauth2ResponseHandler" class="de.ids_mannheim.korap.web.OAuth2ResponseHandler">
 		<constructor-arg index="0" name="iface" ref="kustvakt_auditing" />
 	</bean>
-
+	
+	<bean id="mdGenerator" class="org.apache.oltu.oauth2.as.issuer.MD5Generator">
+	</bean>
+	<bean id="oauthIssuer" class="org.apache.oltu.oauth2.as.issuer.OAuthIssuerImpl">
+		<constructor-arg index="0" ref="mdGenerator" />
+	</bean>
 
 	<bean id="kustvakt_userdb" class="de.ids_mannheim.korap.handlers.EntityDao">
 		<constructor-arg ref="kustvakt_db" />
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
index 66d610f..b194e08 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
@@ -62,6 +62,7 @@
         json.setType(OAuth2ClientType.CONFIDENTIAL);
         json.setUrl("http://example.client.com");
         json.setRedirectURI("https://example.client.com/redirect");
+        json.setDescription("This is a confidential test client.");
 
         return resource().path("oauth2").path("client").path("register")
                 .header(Attributes.AUTHORIZATION,
@@ -89,8 +90,9 @@
         assertEquals(OAuthError.TokenResponse.INVALID_REQUEST,
                 node.at("/error").asText());
 
+        testDeregisterConfidentialClientMissingParameters();
         testDeregisterClientIncorrectCredentials(clientId);
-        testDeregisterConfidentialClient(clientId, clientSecret);
+        testDeregisterConfidentialClient(clientId,clientSecret);
     }
 
     @Test
@@ -101,6 +103,7 @@
         json.setType(OAuth2ClientType.PUBLIC);
         json.setUrl("http://test.public.client.com");
         json.setRedirectURI("https://test.public.client.com/redirect");
+        json.setDescription("This is a public test client.");
 
         ClientResponse response = resource().path("oauth2").path("client")
                 .path("register")
@@ -129,6 +132,7 @@
         json.setType(OAuth2ClientType.PUBLIC);
         json.setUrl("http://korap.ids-mannheim.de/native");
         json.setRedirectURI("https://korap.ids-mannheim.de/native/redirect");
+        json.setDescription("This is a native test client.");
 
         ClientResponse response = resource().path("oauth2").path("client")
                 .path("register")
@@ -140,7 +144,7 @@
                 .entity(json).post(ClientResponse.class);
 
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        
+
         //EM: need to check native
     }
 
@@ -167,8 +171,6 @@
     private void testDeregisterConfidentialClient (String clientId,
             String clientSecret) throws UniformInterfaceException,
             ClientHandlerException, KustvaktException {
-        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
-        form.add("client_id", clientId);
 
         ClientResponse response = resource().path("oauth2").path("client")
                 .path("deregister").path("confidential")
@@ -178,16 +180,34 @@
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
                 .header(HttpHeaders.CONTENT_TYPE,
                         ContentType.APPLICATION_FORM_URLENCODED)
-                .entity(form).delete(ClientResponse.class);
+                .delete(ClientResponse.class);
 
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
     }
 
+    private void testDeregisterConfidentialClientMissingParameters ()
+            throws KustvaktException {
+
+        ClientResponse response = resource().path("oauth2").path("client")
+                .path("deregister").path("confidential")
+                .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+                .header(HttpHeaders.CONTENT_TYPE,
+                        ContentType.APPLICATION_FORM_URLENCODED)
+                .delete(ClientResponse.class);
+
+        String entity = response.getEntity(String.class);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+        JsonNode node = JsonUtils.readTree(entity);
+        assertEquals(OAuthError.TokenResponse.INVALID_REQUEST,
+                node.at("/error").asText());
+        assertEquals("Missing parameters: client_secret client_id",
+                node.at("/error_description").asText());
+    }
+
     private void testDeregisterClientIncorrectCredentials (String clientId)
             throws UniformInterfaceException, ClientHandlerException,
             KustvaktException {
-        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
-        form.add("client_id", clientId);
 
         ClientResponse response = resource().path("oauth2").path("client")
                 .path("deregister").path("confidential")
@@ -197,7 +217,7 @@
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
                 .header(HttpHeaders.CONTENT_TYPE,
                         ContentType.APPLICATION_FORM_URLENCODED)
-                .entity(form).delete(ClientResponse.class);
+                .delete(ClientResponse.class);
 
         String entity = response.getEntity(String.class);
         assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
@@ -205,7 +225,7 @@
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(OAuthError.TokenResponse.INVALID_CLIENT,
                 node.at("/error").asText());
-        assertEquals("Invalid client credentials.",
+        assertEquals("Invalid client credentials",
                 node.at("/error_description").asText());
 
         checkWWWAuthenticateHeader(response);
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ControllerTest.java
index 956e3ed..3214fda 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ControllerTest.java
@@ -2,6 +2,9 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URI;
 
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response.Status;
@@ -14,9 +17,7 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.net.HttpHeaders;
-import com.sun.jersey.api.client.ClientHandlerException;
 import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
 import com.sun.jersey.core.util.MultivaluedMapImpl;
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
@@ -34,24 +35,99 @@
     @Autowired
     private HttpAuthorizationHandler handler;
 
-    private ClientResponse testRequestTokenConfidentialClient (
-            MultivaluedMap<String, String> form)
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
-        return resource().path("oauth2").path("token")
+    private ClientResponse requestAuthorizationConfidentialClient (
+            MultivaluedMap<String, String> form) throws KustvaktException {
+
+        return resource().path("oauth2").path("authorize")
                 .header(Attributes.AUTHORIZATION,
                         handler.createBasicAuthorizationHeaderValue(
-                                "fCBbQkAyYzI4NzUxMg==", "secret"))
+                                "fCBbQkAyYzI4NzUxMg", "secret"))
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
                 .header(HttpHeaders.CONTENT_TYPE,
                         ContentType.APPLICATION_FORM_URLENCODED)
                 .entity(form).post(ClientResponse.class);
     }
 
-    private ClientResponse testRequestTokenPublicClient (
-            MultivaluedMap<String, String> form)
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+    @Test
+    public void testAuthorizeConfidentialClient () throws KustvaktException {
+        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+        form.add("response_type", "code");
+        form.add("client_id", "fCBbQkAyYzI4NzUxMg");
+        form.add("username", "dory");
+        form.add("password", "password");
+        ClientResponse response = requestAuthorizationConfidentialClient(form);
+
+        assertEquals(Status.TEMPORARY_REDIRECT.getStatusCode(),
+                response.getStatus());
+        URI redirectUri = response.getLocation();
+        assertTrue(redirectUri.getQuery().startsWith("code"));
+    }
+
+    @Test
+    public void testAuthorizeInvalidRedirectUri () throws KustvaktException {
+        String redirectUri = "https://different.uri/redirect";
+
+        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+        form.add("response_type", "code");
+        form.add("client_id", "fCBbQkAyYzI4NzUxMg");
+        form.add("username", "dory");
+        form.add("password", "password");
+        form.add("redirect_uri", redirectUri);
+        ClientResponse response = requestAuthorizationConfidentialClient(form);
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+        String entity = response.getEntity(String.class);
+        JsonNode node = JsonUtils.readTree(entity);
+        assertEquals(OAuthError.CodeResponse.INVALID_REQUEST,
+                node.at("/error").asText());
+        assertEquals(redirectUri + " is unknown",
+                node.at("/error_description").asText());
+    }
+
+    @Test
+    public void testAuthorizeMissingRequiredParameters ()
+            throws KustvaktException {
+        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+        // missing code
+        ClientResponse response = requestAuthorizationConfidentialClient(form);
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+        String entity = response.getEntity(String.class);
+        JsonNode node = JsonUtils.readTree(entity);
+        assertEquals(OAuthError.CodeResponse.INVALID_REQUEST,
+                node.at("/error").asText());
+        assertEquals("Missing response_type parameter value",
+                node.at("/error_description").asText());
+
+        // missing client_id
+        form.add("response_type", "code");
+        response = requestAuthorizationConfidentialClient(form);
+        entity = response.getEntity(String.class);
+        node = JsonUtils.readTree(entity);
+        assertEquals("Missing parameters: client_id",
+                node.at("/error_description").asText());
+    }
+
+    @Test
+    public void testAuthorizeInvalidResponseType () throws KustvaktException {
+        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+        form.add("response_type", "string");
+
+        ClientResponse response = requestAuthorizationConfidentialClient(form);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+        String entity = response.getEntity(String.class);
+        JsonNode node = JsonUtils.readTree(entity);
+        assertEquals(OAuthError.CodeResponse.INVALID_REQUEST,
+                node.at("/error").asText());
+        assertEquals("Invalid response_type parameter value",
+                node.at("/error_description").asText());
+    }
+
+    private ClientResponse requestToken (MultivaluedMap<String, String> form)
+            throws KustvaktException {
         return resource().path("oauth2").path("token")
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
                 .header(HttpHeaders.CONTENT_TYPE,
@@ -61,12 +137,15 @@
 
     @Test
     public void testRequestTokenPasswordGrantConfidential ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+            throws KustvaktException {
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "password");
+        form.add("client_id", "fCBbQkAyYzI4NzUxMg");
+        form.add("client_secret", "secret");
+        form.add("username", "dory");
+        form.add("password", "password");
 
-        ClientResponse response = testRequestTokenConfidentialClient(form);
+        ClientResponse response = requestToken(form);
         String entity = response.getEntity(String.class);
 
         JsonNode node = JsonUtils.readTree(entity);
@@ -78,71 +157,80 @@
     }
 
     @Test
-    public void testRequestTokenConfidentialMissingSecret ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+    public void testRequestTokenPasswordGrantMissingClientSecret ()
+            throws KustvaktException {
 
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "password");
-        form.add("client_id", "fCBbQkAyYzI4NzUxMg==");
+        form.add("username", "dory");
+        form.add("password", "password");
+        form.add("client_id", "fCBbQkAyYzI4NzUxMg");
 
-        ClientResponse response = testRequestTokenPublicClient(form);
-        assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+        ClientResponse response = requestToken(form);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
 
         String entity = response.getEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(OAuthError.TokenResponse.INVALID_CLIENT,
+        assertEquals(OAuthError.TokenResponse.INVALID_REQUEST,
                 node.at("/error").asText());
-    }
-
-    @Test
-    public void testRequestTokenPasswordGrantPublic ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
-        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
-        form.add("grant_type", "password");
-        form.add("client_id", "iBr3LsTCxOj7D2o0A5m");
-
-        ClientResponse response = testRequestTokenPublicClient(form);
-        String entity = response.getEntity(String.class);
-
-        JsonNode node = JsonUtils.readTree(entity);
-        assertNotNull(node.at("/access_token").asText());
-        assertNotNull(node.at("/refresh_token").asText());
-        assertEquals(TokenType.BEARER.toString(),
-                node.at("/token_type").asText());
-        assertNotNull(node.at("/expires_in").asText());
+        assertEquals("Missing parameters: client_secret",
+                node.at("/error_description").asText());
     }
 
     @Test
     public void testRequestTokenPasswordGrantMissingClientId ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+            throws KustvaktException {
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "password");
+        form.add("username", "dory");
+        form.add("password", "password");
+        form.add("client_secret", "secret");
 
-        ClientResponse response = testRequestTokenPublicClient(form);
+        ClientResponse response = requestToken(form);
         String entity = response.getEntity(String.class);
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
 
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(OAuthError.TokenResponse.INVALID_REQUEST,
                 node.at("/error").asText());
-        assertEquals("client_id is missing",
+        assertEquals("Missing parameters: client_id",
                 node.at("/error_description").asText());
     }
+    
+    @Test
+    public void testRequestTokenPasswordGrantPublic ()
+            throws KustvaktException {
+        MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+        form.add("grant_type", "password");
+        form.add("username", "dory");
+        form.add("password", "password");
+        form.add("client_id", "iBr3LsTCxOj7D2o0A5m");
+
+        ClientResponse response = requestToken(form);
+        String entity = response.getEntity(String.class);
+
+        JsonNode node = JsonUtils.readTree(entity);
+        assertNotNull(node.at("/access_token").asText());
+        assertNotNull(node.at("/refresh_token").asText());
+        assertEquals(TokenType.BEARER.toString(),
+                node.at("/token_type").asText());
+        assertNotNull(node.at("/expires_in").asText());
+    }
 
     @Test
     public void testRequestTokenPasswordGrantNonNative ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+            throws KustvaktException {
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "password");
-        form.add("client_id", "8bIDtZnH6NvRkW2Fq==");
+        form.add("username", "dory");
+        form.add("password", "password");
+        // confidential nonnative
+        form.add("client_id", "9aHsGW6QflV13ixNpez");
+        form.add("client_secret", "secret");
 
-        ClientResponse response = testRequestTokenPublicClient(form);
+        ClientResponse response = requestToken(form);
         String entity = response.getEntity(String.class);
-        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
 
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(OAuthError.TokenResponse.UNAUTHORIZED_CLIENT,
@@ -153,13 +241,13 @@
 
     @Test
     public void testRequestTokenClientCredentialsGrant ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+            throws KustvaktException {
 
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "client_credentials");
-
-        ClientResponse response = testRequestTokenConfidentialClient(form);
+        form.add("client_id", "fCBbQkAyYzI4NzUxMg");
+        form.add("client_secret", "secret");
+        ClientResponse response = requestToken(form);
         String entity = response.getEntity(String.class);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
@@ -173,11 +261,9 @@
     }
 
     @Test
-    public void testRequestTokenMissingGrantType ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+    public void testRequestTokenMissingGrantType () throws KustvaktException {
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
-        ClientResponse response = testRequestTokenConfidentialClient(form);
+        ClientResponse response = requestToken(form);
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
 
         String entity = response.getEntity(String.class);
@@ -187,9 +273,7 @@
     }
 
     @Test
-    public void testRequestTokenUnsupportedGrant ()
-            throws UniformInterfaceException, ClientHandlerException,
-            KustvaktException {
+    public void testRequestTokenUnsupportedGrant () throws KustvaktException {
 
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("grant_type", "blahblah");
diff --git a/full/src/test/resources/test-config.xml b/full/src/test/resources/test-config.xml
index 0445d65..c0f7a2e 100644
--- a/full/src/test/resources/test-config.xml
+++ b/full/src/test/resources/test-config.xml
@@ -167,10 +167,10 @@
 
 	<!-- URLValidator -->
 	<bean id="urlValidator" class="org.apache.commons.validator.routines.UrlValidator">
-		<constructor-arg value="http,https"/>
+		<constructor-arg value="http,https" />
 	</bean>
 	<bean id="httpsValidator" class="org.apache.commons.validator.routines.UrlValidator">
-		<constructor-arg value="https"/>
+		<constructor-arg value="https" />
 	</bean>
 
 	<bean id="kustvakt_rewrite" class="de.ids_mannheim.korap.rewrite.FullRewriteHandler">
@@ -184,10 +184,18 @@
 	<bean id="kustvaktExceptionHandler" class="de.ids_mannheim.korap.web.KustvaktExceptionHandler">
 		<constructor-arg index="0" name="iface" ref="kustvakt_auditing" />
 	</bean>
+
+	<!-- OAuth -->
 	<bean id="oauth2ResponseHandler" class="de.ids_mannheim.korap.web.OAuth2ResponseHandler">
 		<constructor-arg index="0" name="iface" ref="kustvakt_auditing" />
 	</bean>
 
+	<bean id="mdGenerator" class="org.apache.oltu.oauth2.as.issuer.MD5Generator">
+	</bean>
+	<bean id="oauthIssuer" class="org.apache.oltu.oauth2.as.issuer.OAuthIssuerImpl">
+		<constructor-arg index="0" ref="mdGenerator" />
+	</bean>
+
 	<bean id="kustvakt_userdb" class="de.ids_mannheim.korap.handlers.EntityDao">
 		<constructor-arg ref="kustvakt_db" />
 	</bean>
@@ -200,8 +208,7 @@
 		<constructor-arg ref="kustvakt_db" />
 	</bean>
 
-	<bean name="kustvakt_encryption"
-		class="de.ids_mannheim.korap.encryption.KustvaktEncryption">
+	<bean name="kustvakt_encryption" class="de.ids_mannheim.korap.encryption.KustvaktEncryption">
 		<constructor-arg ref="kustvakt_config" />
 	</bean>
 
@@ -267,8 +274,8 @@
 	<!-- specify type for constructor argument -->
 	<bean id="kustvakt_authenticationmanager"
 		class="de.ids_mannheim.korap.authentication.KustvaktAuthenticationManager">
-		<constructor-arg
-			type="de.ids_mannheim.korap.interfaces.EntityHandlerIface" ref="kustvakt_userdb" />
+		<constructor-arg type="de.ids_mannheim.korap.interfaces.EntityHandlerIface"
+			ref="kustvakt_userdb" />
 		<constructor-arg type="de.ids_mannheim.korap.interfaces.EncryptionIface"
 			ref="kustvakt_encryption" />
 		<constructor-arg ref="kustvakt_config" />
@@ -309,8 +316,8 @@
 
 	<!-- mail -->
 	<bean id="authenticator" class="de.ids_mannheim.korap.service.MailAuthenticator">
-		<constructor-arg index="0" value="${mail.username}"/>
-		<constructor-arg index="1" value="${mail.password}"/>
+		<constructor-arg index="0" value="${mail.username}" />
+		<constructor-arg index="1" value="${mail.password}" />
 	</bean>
 	<bean id="smtpSession" class="javax.mail.Session" factory-method="getInstance">
 		<constructor-arg index="0">
@@ -323,7 +330,7 @@
 				<prop key="mail.smtp.connectiontimeout">${mail.connectiontimeout}</prop>
 			</props>
 		</constructor-arg>
-		<constructor-arg index="1" ref="authenticator"/>
+		<constructor-arg index="1" ref="authenticator" />
 	</bean>
 	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
 		<property name="session" ref="smtpSession" />
