Kai,

Having not created a GIT patch before, I selected all projects, right
clicked to access the Team menu, selected Create Patch, and entered a file
name. Attached you'll find the resulting file.

Regards,
Richard

On Fri, Nov 10, 2017 at 3:45 AM, Zheng, Kai <[email protected]> wrote:

> Sounds good, Gerard.
>
>
>
> I’d like to see your patch and then have better idea. I understand the
> purpose and the proposed change.
>
>
>
> Regards,
>
> Kai
>
>
>
> *From:* Gerard Gagliano [mailto:[email protected]]
> *Sent:* Friday, November 10, 2017 6:12 AM
> *To:* [email protected]
> *Subject:* Needed changes to Kerby as a result of the introduction of the
> KdcClientRequest
>
>
>
> We've been working to make the changes necessitated by the introduction of
> the KdcClientRequest class and the associated calling parameter changes.
>
>
> Many data items needed by the authorization data backend code are not
> included in the KdcClientRequest class as defined in the 1.1.0-SNAPSHOT.
> Modification of this class to include the necessary data items includes a
> reference to the KrbIdentity class.
>
>
> This creates a circular dependency between the kerb-core project and the
> kerb-identity project.  The circular dependency can be resolved by moving
> KrbIdentity from kerb-identity to kerb-core.  Another suggestion is to more
> it to kerb-common.  And another suggestion is to remove KdcClientRequest
> from package ….kerb.type.kdc as all other classes in that package are ASN1
> classes and this is not.
>
>
>
> Moving the classes as follows resolves the circular dependency:
>
>     KdcClientRequest from kerb-core, and
>
>     KrbIdentity from kerb-identity
>
>     To kerb-common — package org.apache.kerby.kerberos.kerb.request
>
>
>
> In addition, a dependency on kerb-common will be added to kerb-identity.
>
>
>
> Without objection, we’ll move these classes.  If there is a better way
> than this, please suggest.
>
>
>
> Thanks.
>
>
>



-- 
Richard M Feezel
[email protected]
diff --git a/benchmark/KrbClient.patch b/benchmark/KrbClient.patch
new file mode 100644
index 0000000..0160a68
--- /dev/null
+++ b/benchmark/KrbClient.patch
@@ -0,0 +1,578 @@
+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 97bc84e..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
+@@ -29,7 +29,7 @@
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.identity.BatchTrans;
+ import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+-import org.apache.kerby.kerberos.kerb.provider.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.PrincipalName;
+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 4f600c7..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
+@@ -37,7 +37,7 @@
+ import org.apache.kerby.config.Config;
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+-import org.apache.kerby.kerberos.kerb.provider.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;
+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 f1a16f4..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 @@
+ 
+ import java.util.Comparator;
+ 
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ 
+ /**
+  * Comparator for KrbIdentity
+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 8a60143..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.IntSerializer;
+ import org.apache.directory.mavibot.btree.serializer.LongSerializer;
+ import org.apache.directory.mavibot.btree.serializer.StringSerializer;
+-import org.apache.kerby.kerberos.kerb.provider.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;
+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 ce1146d..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
+@@ -30,7 +30,7 @@
+ import org.apache.directory.mavibot.btree.serializer.StringSerializer;
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
+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 2acd32b..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.provider.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;
+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 1270397..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
+@@ -24,7 +24,7 @@
+ 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.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ import org.junit.AfterClass;
+ import org.junit.BeforeClass;
+ import org.junit.rules.TemporaryFolder;
+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 e7f50f5..6116317 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
+@@ -22,7 +22,7 @@
+ import org.apache.kerby.config.Config;
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ import org.apache.zookeeper.KeeperException;
+ import org.apache.zookeeper.WatchedEvent;
+ import org.apache.zookeeper.Watcher;
+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 818b390..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,7 +24,7 @@
+ 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.provider.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;
+ import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+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 1796b80..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
+@@ -23,7 +23,7 @@
+ import org.apache.kerby.kerberos.kerb.admin.kadmin.Kadmin;
+ import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
+ import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ import org.apache.kerby.kerberos.kerb.server.KdcConfig;
+ 
+ /**
+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 158ed7e..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,7 +23,7 @@
+ 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.provider.KrbIdentity;
++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;
+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
+index 397d197..e155224 100644
+--- 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
+@@ -17,11 +17,10 @@
+  *  under the License.
+  *
+  */
+-package org.apache.kerby.kerberos.kerb.type.kdc;
++package org.apache.kerby.kerberos.kerb.request;
+ 
+ import java.net.InetAddress;
+ 
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+ 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;
+@@ -40,18 +39,18 @@
+     private PrincipalName tgsName;
+     private EncryptionType tgsKeyType;
+     private EncryptionKey tgsKey;
+-    private String kdcRealm;
+     private EncryptionKey tgsSessionKey;
+     private EncryptionKey tgsServerKey;
+-    private KrbIdentity clientEntry;
+-    private KrbIdentity serverEntry;
+     
+     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;
+@@ -197,7 +196,7 @@
+         return isToken;
+     }
+ 
+-    public void setToken(boolean isToken) {
++    public void setIsToken(boolean isToken) {
+         this.isToken = isToken;
+     }
+ 
+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
+index d0ad908..0272a3e 100644
+--- 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
+@@ -6,27 +6,28 @@
+  *  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. 
+- *  
++ *  under the License.
++ *
+  */
+-package org.apache.kerby.kerberos.kerb.provider;
++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;
+ 
+-import java.util.HashMap;
+-import java.util.List;
+-import java.util.Map;
+ 
+ /**
+  *
+@@ -36,34 +37,37 @@
+  */
+ public class KrbIdentity {
+     /** the principal */
+-    private PrincipalName principal;
++    private PrincipalName                            principal;
+ 
+     /** the key version */
+-    private int keyVersion = 1;
++    private int                                      keyVersion  = 1;
+ 
+     /** KDC flags */
+-    private int kdcFlags = 0;
++    private int                                      kdcFlags    = 0;
+ 
+     /** flag to indicate if this identity was disabled */
+-    private boolean disabled;
++    private boolean                                  disabled;
+ 
+     /** flag to indicate if this identity was locked */
+-    private boolean locked;
++    private boolean                                  locked;
+ 
+     /** the expiration time of the identity, default set to never expire */
+-    private KerberosTime expireTime = KerberosTime.NEVER;
++    private KerberosTime                             expireTime  = KerberosTime.NEVER;
+ 
+     /** the creation time of the identity */
+-    private KerberosTime createdTime = KerberosTime.now();
++    private KerberosTime                             createdTime = KerberosTime.now();
+ 
+     /** the keys associated with this identity */
+-    private Map<EncryptionType, EncryptionKey> keys =
+-            new HashMap<EncryptionType, EncryptionKey>();
++    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();
+     }
+@@ -72,6 +76,10 @@
+         principal = new PrincipalName(newPrincipalName);
+     }
+ 
++    public void setPrincipalName(PrincipalName newPrincipalName) {
++        principal = newPrincipalName;
++    }
++
+     public PrincipalName getPrincipal() {
+         return principal;
+     }
+@@ -117,7 +125,7 @@
+     }
+ 
+     public void addKeys(List<EncryptionKey> encKeys) {
+-        for (EncryptionKey key : encKeys) {
++        for (final EncryptionKey key : encKeys) {
+             keys.put(key.getKeyType(), key);
+         }
+     }
+@@ -157,7 +165,7 @@
+         }
+ 
+         if (obj instanceof KrbIdentity) {
+-            KrbIdentity other = (KrbIdentity) obj;
++            final KrbIdentity other = (KrbIdentity) obj;
+             if (principal == null) {
+                 if (other.principal != null) {
+                     return false;
+@@ -174,8 +182,7 @@
+     public int hashCode() {
+         final int prime = 31;
+         int result = 1;
+-        result = prime * result + ((principal == null) ? 0
+-                : principal.hashCode());
++        result = prime * result + ((principal == null) ? 0 : principal.hashCode());
+         return result;
+     }
+ }
+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 47d62cc..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.provider.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;
+ 
+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 1d0c84d..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 @@
+ 
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
+-import org.apache.kerby.kerberos.kerb.provider.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;
+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>
+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 0927dd0..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,7 +20,7 @@
+ package org.apache.kerby.kerberos.kerb.identity;
+ 
+ import org.apache.kerby.kerberos.kerb.KrbException;
+-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ 
+ /**
+  * Batch operations support to create/update/delete principal accounts
+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 c08bb6a..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,9 +22,9 @@
+ 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.provider.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.AuthorizationData;
+-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
+ import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+ 
+ import java.util.LinkedHashMap;
+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 06cf735..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,9 +20,9 @@
+ package org.apache.kerby.kerberos.kerb.identity;
+ 
+ import org.apache.kerby.kerberos.kerb.KrbException;
+-import org.apache.kerby.kerberos.kerb.provider.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.AuthorizationData;
+-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
+ import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+ 
+ /**
+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 504aedf..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 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.provider.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;
+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 a2c29c1..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.provider.KrbIdentity;
++import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
+ 
+ import java.util.ArrayList;
+ import java.util.Collections;
+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 d6b3dc5..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 @@
+ 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.provider.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;
+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 7b9a741..0ed3f0d 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.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.provider.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;
+@@ -59,6 +59,7 @@
+ import org.apache.kerby.kerberos.kerb.type.kdc.KdcOptions;
+ import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+ import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
++import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+ import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+ import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+ import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+@@ -757,15 +758,17 @@
+      */
+     private void checkServer() throws KrbException {
+         KdcReq request = getKdcReq();
++        KdcReqBody body = request.getReqBody();
+ 
+-        PrincipalName principal = request.getReqBody().getSname();
+-        String serverRealm = request.getReqBody().getRealm();
++        PrincipalName principal = body.getSname();
++        String serverRealm = body.getRealm();
+         if (serverRealm == null || serverRealm.isEmpty()) {
+             LOG.info("Can't get the server realm from request, and try to get from kdcContext.");
+             serverRealm = kdcContext.getKdcRealm();
+         }
+         principal.setRealm(serverRealm);
+-
++        setServerPrincipal(principal);
++        
+         KrbIdentity serverEntry = getEntry(principal.getName());
+         if (serverEntry == null) {
+             LOG.error("Principal: " + principal.getName() + " is not known");
+@@ -773,7 +776,7 @@
+         }
+ 
+         setServerEntry(serverEntry);
+-        for (EncryptionType encType : request.getReqBody().getEtypes()) {
++        for (EncryptionType encType : body.getEtypes()) {
+             if (serverEntry.getKeys().containsKey(encType)) {
+                 EncryptionKey serverKey = serverEntry.getKeys().get(encType);
+                 setServerKey(serverKey);
+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 993e269..6994958 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
+@@ -24,7 +24,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.provider.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;
+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 30288b2..0bce64c 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.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;
+@@ -37,7 +38,6 @@
+ 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;
+@@ -230,12 +230,15 @@
+         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) {
+@@ -244,11 +247,8 @@
+             clientRequest.setTgsName(tgsRequest.getTgsPrincipal());
+             clientRequest.setTgsKeyType(tgsRequest.getEncryptionType());
+             clientRequest.setTgsKey(tgsRequest.getTgsEntry().getKey(tgsRequest.getEncryptionType()));
+-            clientRequest.setKdcRealm(tgsRequest.getKdcContext().getKdcRealm());
+             clientRequest.setTgsSessionKey(tgsRequest.getTgtSessionKey());
+             clientRequest.setTgsServerKey(tgsRequest.getServerKey());
+-            clientRequest.setClientEntry(tgsRequest.getClientEntry());
+-            clientRequest.setServerEntry(tgsRequest.getServerEntry());
+         }
+ 
+         return getKdcContext().getIdentityService()
+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 3d52902..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 @@
+ 
+ import org.apache.kerby.kerberos.kerb.KrbException;
+ import org.apache.kerby.kerberos.kerb.admin.kadmin.local.LocalKadmin;
+-import org.apache.kerby.kerberos.kerb.provider.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;
+ 
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 97bc84e..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
@@ -29,7 +29,7 @@
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.BatchTrans;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.provider.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.PrincipalName;
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 4f600c7..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
@@ -37,7 +37,7 @@
 import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.provider.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;
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 f1a16f4..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 @@
 
 import java.util.Comparator;
 
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 /**
  * Comparator for KrbIdentity
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 8a60143..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.IntSerializer;
 import org.apache.directory.mavibot.btree.serializer.LongSerializer;
 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
-import org.apache.kerby.kerberos.kerb.provider.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;
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 ce1146d..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
@@ -30,7 +30,7 @@
 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 2acd32b..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.provider.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;
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 1270397..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
@@ -24,7 +24,7 @@
 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.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.rules.TemporaryFolder;
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 e7f50f5..6116317 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
@@ -22,7 +22,7 @@
 import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
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 818b390..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,7 +24,7 @@
 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.provider.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;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
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 1796b80..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
@@ -23,7 +23,7 @@
 import org.apache.kerby.kerberos.kerb.admin.kadmin.Kadmin;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
 import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 
 /**
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 158ed7e..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,7 +23,7 @@
 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.provider.KrbIdentity;
+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;
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
index 397d197..e155224 100644
--- 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
@@ -17,11 +17,10 @@
  *  under the License.
  *
  */
-package org.apache.kerby.kerberos.kerb.type.kdc;
+package org.apache.kerby.kerberos.kerb.request;
 
 import java.net.InetAddress;
 
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
 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;
@@ -40,18 +39,18 @@
     private PrincipalName tgsName;
     private EncryptionType tgsKeyType;
     private EncryptionKey tgsKey;
-    private String kdcRealm;
     private EncryptionKey tgsSessionKey;
     private EncryptionKey tgsServerKey;
-    private KrbIdentity clientEntry;
-    private KrbIdentity serverEntry;
     
     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;
@@ -197,7 +196,7 @@
         return isToken;
     }
 
-    public void setToken(boolean isToken) {
+    public void setIsToken(boolean isToken) {
         this.isToken = isToken;
     }
 
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
index d0ad908..0272a3e 100644
--- 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
@@ -6,27 +6,28 @@
  *  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. 
- *  
+ *  under the License.
+ *
  */
-package org.apache.kerby.kerberos.kerb.provider;
+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;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  *
@@ -36,34 +37,37 @@
  */
 public class KrbIdentity {
     /** the principal */
-    private PrincipalName principal;
+    private PrincipalName                            principal;
 
     /** the key version */
-    private int keyVersion = 1;
+    private int                                      keyVersion  = 1;
 
     /** KDC flags */
-    private int kdcFlags = 0;
+    private int                                      kdcFlags    = 0;
 
     /** flag to indicate if this identity was disabled */
-    private boolean disabled;
+    private boolean                                  disabled;
 
     /** flag to indicate if this identity was locked */
-    private boolean locked;
+    private boolean                                  locked;
 
     /** the expiration time of the identity, default set to never expire */
-    private KerberosTime expireTime = KerberosTime.NEVER;
+    private KerberosTime                             expireTime  = KerberosTime.NEVER;
 
     /** the creation time of the identity */
-    private KerberosTime createdTime = KerberosTime.now();
+    private KerberosTime                             createdTime = KerberosTime.now();
 
     /** the keys associated with this identity */
-    private Map<EncryptionType, EncryptionKey> keys =
-            new HashMap<EncryptionType, EncryptionKey>();
+    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();
     }
@@ -72,6 +76,10 @@
         principal = new PrincipalName(newPrincipalName);
     }
 
+    public void setPrincipalName(PrincipalName newPrincipalName) {
+        principal = newPrincipalName;
+    }
+
     public PrincipalName getPrincipal() {
         return principal;
     }
@@ -117,7 +125,7 @@
     }
 
     public void addKeys(List<EncryptionKey> encKeys) {
-        for (EncryptionKey key : encKeys) {
+        for (final EncryptionKey key : encKeys) {
             keys.put(key.getKeyType(), key);
         }
     }
@@ -157,7 +165,7 @@
         }
 
         if (obj instanceof KrbIdentity) {
-            KrbIdentity other = (KrbIdentity) obj;
+            final KrbIdentity other = (KrbIdentity) obj;
             if (principal == null) {
                 if (other.principal != null) {
                     return false;
@@ -174,8 +182,7 @@
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((principal == null) ? 0
-                : principal.hashCode());
+        result = prime * result + ((principal == null) ? 0 : principal.hashCode());
         return result;
     }
 }
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 47d62cc..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.provider.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;
 
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 1d0c84d..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 @@
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.provider.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;
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>
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 0927dd0..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,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.identity;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 /**
  * Batch operations support to create/update/delete principal accounts
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 c08bb6a..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,9 +22,9 @@
 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.provider.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.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
 
 import java.util.LinkedHashMap;
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 06cf735..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,9 +20,9 @@
 package org.apache.kerby.kerberos.kerb.identity;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.provider.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.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.type.kdc.KdcClientRequest;
 import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
 
 /**
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 504aedf..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 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.provider.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;
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 a2c29c1..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.provider.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.request.KrbIdentity;
 
 import java.util.ArrayList;
 import java.util.Collections;
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 d6b3dc5..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 @@
 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.provider.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;
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 7b9a741..0ed3f0d 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.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.provider.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;
@@ -59,6 +59,7 @@
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcOptions;
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
 import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
 import org.apache.kerby.kerberos.kerb.type.pa.PaData;
 import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
 import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
@@ -757,15 +758,17 @@
      */
     private void checkServer() throws KrbException {
         KdcReq request = getKdcReq();
+        KdcReqBody body = request.getReqBody();
 
-        PrincipalName principal = request.getReqBody().getSname();
-        String serverRealm = request.getReqBody().getRealm();
+        PrincipalName principal = body.getSname();
+        String serverRealm = body.getRealm();
         if (serverRealm == null || serverRealm.isEmpty()) {
             LOG.info("Can't get the server realm from request, and try to get from kdcContext.");
             serverRealm = kdcContext.getKdcRealm();
         }
         principal.setRealm(serverRealm);
-
+        setServerPrincipal(principal);
+        
         KrbIdentity serverEntry = getEntry(principal.getName());
         if (serverEntry == null) {
             LOG.error("Principal: " + principal.getName() + " is not known");
@@ -773,7 +776,7 @@
         }
 
         setServerEntry(serverEntry);
-        for (EncryptionType encType : request.getReqBody().getEtypes()) {
+        for (EncryptionType encType : body.getEtypes()) {
             if (serverEntry.getKeys().containsKey(encType)) {
                 EncryptionKey serverKey = serverEntry.getKeys().get(encType);
                 setServerKey(serverKey);
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 993e269..6994958 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
@@ -24,7 +24,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.provider.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;
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 30288b2..0bce64c 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.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;
@@ -37,7 +38,6 @@
 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;
@@ -230,12 +230,15 @@
         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) {
@@ -244,11 +247,8 @@
             clientRequest.setTgsName(tgsRequest.getTgsPrincipal());
             clientRequest.setTgsKeyType(tgsRequest.getEncryptionType());
             clientRequest.setTgsKey(tgsRequest.getTgsEntry().getKey(tgsRequest.getEncryptionType()));
-            clientRequest.setKdcRealm(tgsRequest.getKdcContext().getKdcRealm());
             clientRequest.setTgsSessionKey(tgsRequest.getTgtSessionKey());
             clientRequest.setTgsServerKey(tgsRequest.getServerKey());
-            clientRequest.setClientEntry(tgsRequest.getClientEntry());
-            clientRequest.setServerEntry(tgsRequest.getServerEntry());
         }
 
         return getKdcContext().getIdentityService()
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 3d52902..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 @@
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.admin.kadmin.local.LocalKadmin;
-import org.apache.kerby.kerberos.kerb.provider.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;
 

Reply via email to