You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by co...@apache.org on 2017/11/17 10:02:45 UTC

directory-kerby git commit: Changes to prevent circular reference between kerb-kore and kerb-identity.

Repository: directory-kerby
Updated Branches:
  refs/heads/trunk 1e6d36497 -> b5b538f79


Changes to prevent circular reference between kerb-kore and kerb-identity.

Signed-off-by: Colm O hEigeartaigh <co...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/b5b538f7
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/b5b538f7
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/b5b538f7

Branch: refs/heads/trunk
Commit: b5b538f79764a9b4a397a74c8ce74723cb76bf21
Parents: 1e6d364
Author: gg@localhost <gg...@localhost>
Authored: Wed Nov 15 12:07:46 2017 -0700
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Fri Nov 17 09:58:08 2017 +0000

----------------------------------------------------------------------
 .../identitybackend/JsonIdentityBackend.java    |   2 +-
 .../identitybackend/LdapIdentityBackend.java    |   2 +-
 .../org/apache/kerby/KrbIdentityComparator.java |   2 +-
 .../org/apache/kerby/KrbIdentitySerializer.java |   2 +-
 .../java/org/apache/kerby/MavibotBackend.java   |   2 +-
 .../apache/kerby/KrbIdentitySerializerTest.java |   2 +-
 .../org/apache/kerby/MavibotBackendTest.java    |   2 +-
 .../ZookeeperIdentityBackend.java               |   2 +-
 .../kerb/admin/kadmin/local/AdminHelper.java    |   2 +-
 .../kerb/admin/kadmin/local/LocalKadmin.java    |   2 +-
 .../admin/kadmin/local/LocalKadminImpl.java     |   2 +-
 .../kerberos/kerb/request/KdcClientRequest.java | 219 +++++++++++++++++++
 .../kerberos/kerb/request/KrbIdentity.java      | 188 ++++++++++++++++
 .../kerb/type/kdc/KdcClientRequest.java         | 117 ----------
 .../kerb/identity/backend/BackendTest.java      |   2 +-
 .../kerb/identity/backend/BackendTestUtil.java  |   2 +-
 kerby-kerb/kerb-identity/pom.xml                |   5 +
 .../kerberos/kerb/identity/BatchTrans.java      |   1 +
 .../kerb/identity/CacheableIdentityService.java |   3 +-
 .../kerberos/kerb/identity/IdentityService.java |   3 +-
 .../kerberos/kerb/identity/KrbIdentity.java     | 181 ---------------
 .../backend/AbstractIdentityBackend.java        |   4 +-
 .../identity/backend/MemoryIdentityBackend.java |   2 +-
 .../kerberos/kerb/server/request/AsRequest.java |   2 +-
 .../kerb/server/request/KdcRequest.java         |   2 +-
 .../kerb/server/request/TgsRequest.java         |   2 +-
 .../kerb/server/request/TicketIssuer.java       |  20 +-
 .../kadmin/command/GetPrincipalCommand.java     |   2 +-
 28 files changed, 455 insertions(+), 322 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index 3908cc5..f6dc62d 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -28,8 +28,8 @@ import org.apache.kerby.kerberos.kdc.identitybackend.typeAdapter.KerberosTimeAda
 import org.apache.kerby.kerberos.kdc.identitybackend.typeAdapter.PrincipalNameAdapter;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.BatchTrans;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
index 1e087a9..d5b090b 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
@@ -36,8 +36,8 @@ import org.apache.directory.ldap.client.api.LdapNetworkConnection;
 import org.apache.directory.shared.kerberos.KerberosAttribute;
 import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentityComparator.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentityComparator.java b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentityComparator.java
index bce3033..b768fe5 100644
--- a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentityComparator.java
+++ b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentityComparator.java
@@ -21,7 +21,7 @@ package org.apache.kerby;
 
 import java.util.Comparator;
 
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 /**
  * Comparator for KrbIdentity

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
index dc3df02..8fb3a8c 100644
--- a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
+++ b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
@@ -24,7 +24,7 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
 import org.apache.directory.mavibot.btree.serializer.IntSerializer;
 import org.apache.directory.mavibot.btree.serializer.LongSerializer;
 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
index 7c31617..9711a54 100644
--- a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
+++ b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/MavibotBackend.java
@@ -29,8 +29,8 @@ import org.apache.directory.mavibot.btree.Tuple;
 import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
index 4c82bfb..6248355 100644
--- a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
+++ b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby;
 
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
index 6fa17dc..14cf8df 100644
--- a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
+++ b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/MavibotBackendTest.java
@@ -21,10 +21,10 @@ package org.apache.kerby;
 
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendTestBase;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendTestUtil;
 import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.rules.TemporaryFolder;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
index ce82330..fe34da2 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kdc.identitybackend;
 
 import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/AdminHelper.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/AdminHelper.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/AdminHelper.java
index 3d8083e..a0ca3b0 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/AdminHelper.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/AdminHelper.java
@@ -24,9 +24,9 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.admin.kadmin.KadminOption;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadmin.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadmin.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadmin.java
index 5fd2d0d..fd8aa34 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadmin.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadmin.java
@@ -21,9 +21,9 @@ package org.apache.kerby.kerberos.kerb.admin.kadmin.local;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.admin.kadmin.Kadmin;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
 import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
index eabf9ff..1f55345 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
@@ -23,6 +23,7 @@ import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.server.KdcSetting;
 import org.apache.kerby.kerberos.kerb.server.KdcUtil;
@@ -30,7 +31,6 @@ import org.apache.kerby.kerberos.kerb.server.ServerSetting;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.common.KrbUtil;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
 import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KdcClientRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KdcClientRequest.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KdcClientRequest.java
new file mode 100644
index 0000000..af8ae76
--- /dev/null
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KdcClientRequest.java
@@ -0,0 +1,219 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.kerby.kerberos.kerb.request;
+
+import java.net.InetAddress;
+
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+
+/**
+ * This class holds details of the client request which is passed through to the IdentityService
+ * to create the AuthorizationData
+ */
+public class KdcClientRequest {
+
+    private KrbMessageType msgType;
+    private Ticket tgt;
+    private PrincipalName tgsName;
+    private EncryptionType tgsKeyType;
+    private EncryptionKey tgsKey;
+    private EncryptionKey tgsSessionKey;
+    private EncryptionKey tgsServerKey;
+    
+    private boolean isPreAuthenticated;
+    private InetAddress clientAddress;
+    private EncryptionType encryptionType;
+    private EncryptionKey clientKey;
+    private PrincipalName clientPrincipal;
+    private KrbIdentity clientEntry;
+    private PrincipalName serverPrincipal;
+    private KrbIdentity serverEntry;
+    private String kdcRealm;
+    private AuthToken token;
+    private boolean isToken;
+    private boolean isPkinit;
+    private boolean isAnonymous;
+
+    public KrbMessageType getMsgType() {
+        return msgType;
+    }
+
+    public void setMsgType(KrbMessageType msgType) {
+        this.msgType = msgType;
+    }
+
+    public Ticket getTgt() {
+        return tgt;
+    }
+
+    public void setTgt(Ticket tgt) {
+        this.tgt = tgt;
+    }
+
+    public PrincipalName getTgsName() {
+        return tgsName;
+    }
+
+    public void setTgsName(PrincipalName tgsName) {
+        this.tgsName = tgsName;
+    }
+
+    public EncryptionType getTgsKeyType() {
+        return tgsKeyType;
+    }
+
+    public void setTgsKeyType(EncryptionType tgsKeyType) {
+        this.tgsKeyType = tgsKeyType;
+    }
+
+    public EncryptionKey getTgsKey() {
+        return tgsKey;
+    }
+
+    public void setTgsKey(EncryptionKey tgsKey) {
+        this.tgsKey = tgsKey;
+    }
+
+    public String getKdcRealm() {
+        return kdcRealm;
+    }
+
+    public void setKdcRealm(String kdcRealm) {
+        this.kdcRealm = kdcRealm;
+    }
+
+    public EncryptionKey getTgsSessionKey() {
+        return tgsSessionKey;
+    }
+
+    public void setTgsSessionKey(EncryptionKey tgsSessionKey) {
+        this.tgsSessionKey = tgsSessionKey;
+    }
+
+    public EncryptionKey getTgsServerKey() {
+        return tgsServerKey;
+    }
+
+    public void setTgsServerKey(EncryptionKey tgsServerKey) {
+        this.tgsServerKey = tgsServerKey;
+    }
+
+    public KrbIdentity getClientEntry() {
+        return clientEntry;
+    }
+
+    public void setClientEntry(KrbIdentity clientEntry) {
+        this.clientEntry = clientEntry;
+    }
+
+    public KrbIdentity getServerEntry() {
+        return serverEntry;
+    }
+
+    public void setServerEntry(KrbIdentity serverEntry) {
+        this.serverEntry = serverEntry;
+    }
+
+    public boolean isPreAuthenticated() {
+        return isPreAuthenticated;
+    }
+
+    public void setPreAuthenticated(boolean isPreAuthenticated) {
+        this.isPreAuthenticated = isPreAuthenticated;
+    }
+
+    public InetAddress getClientAddress() {
+        return clientAddress;
+    }
+
+    public void setClientAddress(InetAddress clientAddress) {
+        this.clientAddress = clientAddress;
+    }
+
+    public EncryptionType getEncryptionType() {
+        return encryptionType;
+    }
+
+    public void setEncryptionType(EncryptionType encryptionType) {
+        this.encryptionType = encryptionType;
+    }
+
+    public EncryptionKey getClientKey() {
+        return clientKey;
+    }
+
+    public void setClientKey(EncryptionKey clientKey) {
+        this.clientKey = clientKey;
+    }
+
+    public PrincipalName getClientPrincipal() {
+        return clientPrincipal;
+    }
+
+    public void setClientPrincipal(PrincipalName clientPrincipal) {
+        this.clientPrincipal = clientPrincipal;
+    }
+
+    public PrincipalName getServerPrincipal() {
+        return serverPrincipal;
+    }
+
+    public void setServerPrincipal(PrincipalName serverPrincipal) {
+        this.serverPrincipal = serverPrincipal;
+    }
+
+    public AuthToken getToken() {
+        return token;
+    }
+
+    public void setToken(AuthToken token) {
+        this.token = token;
+    }
+
+    public boolean isToken() {
+        return isToken;
+    }
+
+    public void setIsToken(boolean isToken) {
+        this.isToken = isToken;
+    }
+
+    public boolean isPkinit() {
+        return isPkinit;
+    }
+
+    public void setPkinit(boolean isPkinit) {
+        this.isPkinit = isPkinit;
+    }
+
+    public boolean isAnonymous() {
+        return isAnonymous;
+    }
+
+    public void setAnonymous(boolean isAnonymous) {
+        this.isAnonymous = isAnonymous;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KrbIdentity.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KrbIdentity.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KrbIdentity.java
new file mode 100644
index 0000000..f132ff6
--- /dev/null
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/request/KrbIdentity.java
@@ -0,0 +1,188 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.kerby.kerberos.kerb.request;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+
+
+/**
+ *
+ * A class to represent a kerberos identity.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class KrbIdentity {
+    /** the principal */
+    private PrincipalName principal;
+
+    /** the key version */
+    private int keyVersion  = 1;
+
+    /** KDC flags */
+    private int kdcFlags    = 0;
+
+    /** flag to indicate if this identity was disabled */
+    private boolean disabled;
+
+    /** flag to indicate if this identity was locked */
+    private boolean locked;
+
+    /** the expiration time of the identity, default set to never expire */
+    private KerberosTime expireTime  = KerberosTime.NEVER;
+
+    /** the creation time of the identity */
+    private KerberosTime createdTime = KerberosTime.now();
+
+    /** the keys associated with this identity */
+    private final Map<EncryptionType, EncryptionKey> keys = new HashMap<>();
+
+    public KrbIdentity(String principalName) {
+        this.principal = new PrincipalName(principalName);
+    }
+
+    public KrbIdentity(PrincipalName principalName) {
+        this.principal = principalName;
+    }
+
+    public String getPrincipalName() {
+        return principal.getName();
+    }
+
+    public void setPrincipalName(String newPrincipalName) {
+        principal = new PrincipalName(newPrincipalName);
+    }
+
+    public void setPrincipalName(PrincipalName newPrincipalName) {
+        principal = newPrincipalName;
+    }
+
+    public PrincipalName getPrincipal() {
+        return principal;
+    }
+
+    public void setPrincipal(PrincipalName principal) {
+        this.principal = principal;
+    }
+
+    public KerberosTime getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(KerberosTime expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public KerberosTime getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(KerberosTime createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public boolean isDisabled() {
+        return disabled;
+    }
+
+    public void setDisabled(boolean disabled) {
+        this.disabled = disabled;
+    }
+
+    public boolean isLocked() {
+        return locked;
+    }
+
+    public void setLocked(boolean locked) {
+        this.locked = locked;
+    }
+
+    public void addKey(EncryptionKey encKey) {
+        keys.put(encKey.getKeyType(), encKey);
+    }
+
+    public void addKeys(List<EncryptionKey> encKeys) {
+        for (final EncryptionKey key : encKeys) {
+            keys.put(key.getKeyType(), key);
+        }
+    }
+
+    public Map<EncryptionType, EncryptionKey> getKeys() {
+        return keys;
+    }
+
+    public EncryptionKey getKey(EncryptionType encType) {
+        return keys.get(encType);
+    }
+
+    public int getKdcFlags() {
+        return kdcFlags;
+    }
+
+    public void setKdcFlags(int kdcFlags) {
+        this.kdcFlags = kdcFlags;
+    }
+
+    public int getKeyVersion() {
+        return keyVersion;
+    }
+
+    public void setKeyVersion(int keyVersion) {
+        this.keyVersion = keyVersion;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj == null) {
+            return false;
+        }
+
+        if (obj instanceof KrbIdentity) {
+            final KrbIdentity other = (KrbIdentity) obj;
+            if (principal == null) {
+                if (other.principal != null) {
+                    return false;
+                }
+            } else if (!principal.equals(other.principal)) {
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((principal == null) ? 0 : principal.hashCode());
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcClientRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcClientRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcClientRequest.java
deleted file mode 100644
index d845630..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcClientRequest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-package org.apache.kerby.kerberos.kerb.type.kdc;
-
-import java.net.InetAddress;
-
-import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
-
-/**
- * This class holds details of the client request which is passed through to the IdentityService
- * to create the AuthorizationData
- */
-public class KdcClientRequest {
-
-    private boolean isPreAuthenticated;
-    private InetAddress clientAddress;
-    private EncryptionType encryptionType;
-    private EncryptionKey clientKey;
-    private PrincipalName clientPrincipal;
-    private AuthToken token;
-    private boolean isToken;
-    private boolean isPkinit;
-    private boolean isAnonymous;
-
-    public boolean isPreAuthenticated() {
-        return isPreAuthenticated;
-    }
-
-    public void setPreAuthenticated(boolean isPreAuthenticated) {
-        this.isPreAuthenticated = isPreAuthenticated;
-    }
-
-    public InetAddress getClientAddress() {
-        return clientAddress;
-    }
-
-    public void setClientAddress(InetAddress clientAddress) {
-        this.clientAddress = clientAddress;
-    }
-
-    public EncryptionType getEncryptionType() {
-        return encryptionType;
-    }
-
-    public void setEncryptionType(EncryptionType encryptionType) {
-        this.encryptionType = encryptionType;
-    }
-
-    public EncryptionKey getClientKey() {
-        return clientKey;
-    }
-
-    public void setClientKey(EncryptionKey clientKey) {
-        this.clientKey = clientKey;
-    }
-
-    public PrincipalName getClientPrincipal() {
-        return clientPrincipal;
-    }
-
-    public void setClientPrincipal(PrincipalName clientPrincipal) {
-        this.clientPrincipal = clientPrincipal;
-    }
-
-    public AuthToken getToken() {
-        return token;
-    }
-
-    public void setToken(AuthToken token) {
-        this.token = token;
-    }
-
-    public boolean isToken() {
-        return isToken;
-    }
-
-    public void setToken(boolean isToken) {
-        this.isToken = isToken;
-    }
-
-    public boolean isPkinit() {
-        return isPkinit;
-    }
-
-    public void setPkinit(boolean isPkinit) {
-        this.isPkinit = isPkinit;
-    }
-
-    public boolean isAnonymous() {
-        return isAnonymous;
-    }
-
-    public void setAnonymous(boolean isAnonymous) {
-        this.isAnonymous = isAnonymous;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
index 209a4c7..f81e561 100644
--- a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
+++ b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.identity.backend;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
index 9640534..6e5c298 100644
--- a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
+++ b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.identity.backend;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/pom.xml b/kerby-kerb/kerb-identity/pom.xml
index f178848..b91ba78 100644
--- a/kerby-kerb/kerb-identity/pom.xml
+++ b/kerby-kerb/kerb-identity/pom.xml
@@ -34,6 +34,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.kerby</groupId>
+      <artifactId>kerb-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.kerby</groupId>
       <artifactId>kerb-core</artifactId>
       <version>${project.version}</version>
     </dependency>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/BatchTrans.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/BatchTrans.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/BatchTrans.java
index b85cc2e..d9f5ee4 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/BatchTrans.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/BatchTrans.java
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.identity;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 /**
  * Batch operations support to create/update/delete principal accounts

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
index d415661..b506fe1 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/CacheableIdentityService.java
@@ -22,8 +22,9 @@ package org.apache.kerby.kerberos.kerb.identity;
 import org.apache.kerby.config.Config;
 import org.apache.kerby.config.Configured;
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.request.KdcClientRequest;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
 
 import java.util.LinkedHashMap;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
index 54b2bc3..4f91151 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
@@ -20,8 +20,9 @@
 package org.apache.kerby.kerberos.kerb.identity;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.request.KdcClientRequest;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
deleted file mode 100644
index d963441..0000000
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.kerby.kerberos.kerb.identity;
-
-import org.apache.kerby.kerberos.kerb.type.KerberosTime;
-import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- * A class to represent a kerberos identity.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class KrbIdentity {
-    /** the principal */
-    private PrincipalName principal;
-
-    /** the key version */
-    private int keyVersion = 1;
-
-    /** KDC flags */
-    private int kdcFlags = 0;
-
-    /** flag to indicate if this identity was disabled */
-    private boolean disabled;
-
-    /** flag to indicate if this identity was locked */
-    private boolean locked;
-
-    /** the expiration time of the identity, default set to never expire */
-    private KerberosTime expireTime = KerberosTime.NEVER;
-
-    /** the creation time of the identity */
-    private KerberosTime createdTime = KerberosTime.now();
-
-    /** the keys associated with this identity */
-    private Map<EncryptionType, EncryptionKey> keys =
-            new HashMap<EncryptionType, EncryptionKey>();
-
-    public KrbIdentity(String principalName) {
-        this.principal = new PrincipalName(principalName);
-    }
-
-    public String getPrincipalName() {
-        return principal.getName();
-    }
-
-    public void setPrincipalName(String newPrincipalName) {
-        principal = new PrincipalName(newPrincipalName);
-    }
-
-    public PrincipalName getPrincipal() {
-        return principal;
-    }
-
-    public void setPrincipal(PrincipalName principal) {
-        this.principal = principal;
-    }
-
-    public KerberosTime getExpireTime() {
-        return expireTime;
-    }
-
-    public void setExpireTime(KerberosTime expireTime) {
-        this.expireTime = expireTime;
-    }
-
-    public KerberosTime getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(KerberosTime createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public boolean isDisabled() {
-        return disabled;
-    }
-
-    public void setDisabled(boolean disabled) {
-        this.disabled = disabled;
-    }
-
-    public boolean isLocked() {
-        return locked;
-    }
-
-    public void setLocked(boolean locked) {
-        this.locked = locked;
-    }
-
-    public void addKey(EncryptionKey encKey) {
-        keys.put(encKey.getKeyType(), encKey);
-    }
-
-    public void addKeys(List<EncryptionKey> encKeys) {
-        for (EncryptionKey key : encKeys) {
-            keys.put(key.getKeyType(), key);
-        }
-    }
-
-    public Map<EncryptionType, EncryptionKey> getKeys() {
-        return keys;
-    }
-
-    public EncryptionKey getKey(EncryptionType encType) {
-        return keys.get(encType);
-    }
-
-    public int getKdcFlags() {
-        return kdcFlags;
-    }
-
-    public void setKdcFlags(int kdcFlags) {
-        this.kdcFlags = kdcFlags;
-    }
-
-    public int getKeyVersion() {
-        return keyVersion;
-    }
-
-    public void setKeyVersion(int keyVersion) {
-        this.keyVersion = keyVersion;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj == null) {
-            return false;
-        }
-
-        if (obj instanceof KrbIdentity) {
-            KrbIdentity other = (KrbIdentity) obj;
-            if (principal == null) {
-                if (other.principal != null) {
-                    return false;
-                }
-            } else if (!principal.equals(other.principal)) {
-                return false;
-            }
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((principal == null) ? 0
-                : principal.hashCode());
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
index d965dc3..753408a 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractIdentityBackend.java
@@ -25,14 +25,14 @@ import java.util.Collections;
 import org.apache.kerby.config.Configured;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.BatchTrans;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KdcClientRequest;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.ad.AdToken;
 import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
 import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationDataEntry;
 import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationType;
 import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
 import org.apache.kerby.kerberos.kerb.type.base.TokenFormat;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
index 88616ca..26a1b1f 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.identity.backend;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 import java.util.ArrayList;
 import java.util.Collections;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
index 66634e6..dd8877d 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.server.request;
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
index 88bbbbf..a88fb22 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
@@ -28,7 +28,7 @@ import org.apache.kerby.kerberos.kerb.common.KrbUtil;
 import org.apache.kerby.kerberos.kerb.crypto.CheckSumHandler;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.crypto.fast.FastUtil;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.server.KdcRecoverableException;
 import org.apache.kerby.kerberos.kerb.server.preauth.KdcFastContext;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
index 870cf88..24b53a8 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
@@ -25,7 +25,7 @@ import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.crypto.CheckSumHandler;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 import org.apache.kerby.kerberos.kerb.type.ap.ApOption;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
index dc72c33..6af5ced 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
@@ -23,6 +23,7 @@ import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
+import org.apache.kerby.kerberos.kerb.request.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
@@ -32,11 +33,11 @@ import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
 import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
 import org.apache.kerby.kerberos.kerb.type.base.NameType;
 import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
 import org.apache.kerby.kerberos.kerb.type.base.TransitedEncodingType;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcOption;
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcOptions;
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
@@ -229,11 +230,26 @@ public abstract class TicketIssuer {
         clientRequest.setClientAddress(kdcRequest.getClientAddress());
         clientRequest.setClientKey(kdcRequest.getClientKey());
         clientRequest.setClientPrincipal(kdcRequest.getClientPrincipal());
+        clientRequest.setClientEntry(kdcRequest.getClientEntry());
+        clientRequest.setServerPrincipal(kdcRequest.getServerPrincipal());
+        clientRequest.setServerEntry(kdcRequest.getServerEntry());
+        clientRequest.setKdcRealm(kdcRequest.getKdcContext().getKdcRealm());
         clientRequest.setEncryptionType(kdcRequest.getEncryptionType());
         clientRequest.setPkinit(kdcRequest.isPkinit());
         clientRequest.setPreAuthenticated(kdcRequest.isPreAuthenticated());
         clientRequest.setToken(kdcRequest.getToken());
-        clientRequest.setToken(kdcRequest.isToken());
+        clientRequest.setIsToken(kdcRequest.isToken());
+        KrbMessageType msgType = kdcRequest.getKdcReq().getMsgType();
+        clientRequest.setMsgType(msgType);
+        if (msgType == KrbMessageType.TGS_REQ) {
+            TgsRequest tgsRequest = (TgsRequest) kdcRequest;
+            clientRequest.setTgt(tgsRequest.getTgtTicket());
+            clientRequest.setTgsName(tgsRequest.getTgsPrincipal());
+            clientRequest.setTgsKeyType(tgsRequest.getEncryptionType());
+            clientRequest.setTgsKey(tgsRequest.getTgsEntry().getKey(tgsRequest.getEncryptionType()));
+            clientRequest.setTgsSessionKey(tgsRequest.getTgtSessionKey());
+            clientRequest.setTgsServerKey(tgsRequest.getServerKey());
+        }
 
         return getKdcContext().getIdentityService()
                 .getIdentityAuthorizationData(clientRequest, encTicketPart);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b5b538f7/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
index bc8024a..2d5a31c 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.tool.kadmin.command;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.admin.kadmin.local.LocalKadmin;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;