快速业务通道

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
null;        } else       return null;       } else        return null;     } else       return null;    }//decryptAndVerifyDigest

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上)(11)

时间:2011-08-05 IBM Faheem Khan

从票据响应中提取票据和密钥

我们已经讨论了低层 ASN.1 处理以及低层加密支持方法,现在可以讨论如何用这些方法处理在前面用 清单 1 中的 getTicketResponse() 方法提取的票据响应了。

看一下 清单 13 中显示的 getTicketAndKey() 方法(它属于 KerberosClient 类)。这个方法取票 据响应字节数组和一个解密密钥字节数组作为参数。这个方法从票据响应中提取票据和密钥。

getTicketAndKey() 方法返回一个名为 TicketAndKey 的类的实例(这是一个要从票据响应中提取的 密钥和票据的包装器)。我在 清单 14 中已经展示了 TicketAndKey 类。这个类只有四个方法:两个子 setter 方法和两个 getter 方法。setKey() 和 getKey() 方法分别设置和获得密钥字节。setTicket() 和 getTicket() 方法分别设置和获得票据字节。

现在看一看在 清单 13 的 getTicketAndKey() 方法中所发生的过程。回想在对 第一篇文章的图 4 和清单 2的讨论中,介绍了 Kerberos 密钥和票据是如何存储在票据响应中的。从票据响应中提取密钥是 一个漫长的过程,包括以下步骤:

1. 首先,检查 ticketResponse 字节数组是否真的包含了票据响应。为此,我使用了 isASN1Structure() 方法。如果 isASN1Structure() 方法返回 false,那么它表明输入 ticketResponse 字节数组不是有效的票据响应。在这种情况下,不进行任何进行一步的处理并返回 null。

注意在 清单 13 中,我调用了两次 isASN1Structure() 方法。第一调用 isASN1Structure() 方法时 用“11”作为第三个参数的值,而第二次调用 isASN1Structure() 方法时,用“13”作为第三个参数的 值。这是因为“11”是 TGT 响应的特定于应用程序的标签号(本系列的 第一篇文章的清单 2),而“13 ”是服务票据响应的特定于应用程序的标签号(本系列的 第一篇文章的清单 4)。如果 ticketResponse 字节数组是一个 TGT 响应或者服务票据响应,那么这两次方法调用之一会返回 true,就可以进行进一步 的处理。如果这两个方法调用都不返回 true,那么表明 ticketResponse 字节数组不是一个票据响应, 就要返回 null 并且不做任何进一步的处理。

2. 第二步是提取票据响应结构的内容。为此,我使用了 getContents() 方法调用。

3. 票据响应的内容应当是一个 ASN.1 SEQUENCE ,可以调用 isSequence() 方法对此进行检查。

4. 接下来,我调用 getContents() 方法提取 SEQUENCE 的内容。

5. SEQUENCE 的内容是票据响应的七个结构(如图 3 和 第一篇文章的清单 2所示)。在这七个结构 之外,只需要两个:ticket 和 enc-part。

因此,第五步是从 SEQUENCE 内容中提取 ticket 字段(调用 getASN1Structure() 方法),提取 ticket 字段(调用 getContents() 方法)的内容,并将内容存储到在前面创建的 TicketAndKey 对象中 。注意 ticket 字段是特定于上下文的标签号 5,而这个字段的内容是实际的票据,它以一个应用程序级 别的标签号 1 开始,如 第一篇文章的清单 3 和图 9所示。

6. 下面,必须从在第 4 步中得到的 SEQUENCE 内容中提取密钥。这个键在在 SEQUENCE 内容的 enc -part 字段中。因此,在第 6 步,我调用 getASN1Structure() 方法从 SEQUENCE 内容中捕捉 enc-part 字段。

7. 得到了 enc-part 字段后,就要调用 getContents() 方法得到其内容。enc-part 字段的内容构成

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号