快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

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

时间:2011-08-05 IBM Faheem Khan

简介:如果您已经学习了本系列的前两部分,那么现在可以开始第三部分,也就是最后一部分,您将 设置一个 KDC 服务器,向它发送 Kerberos 票据请求并取得其响应。然后,您将学习处理 KDC 服务器的 响应所需的低层 ASN1 处理方法,以便取得票据和会话密钥。取得了服务票据后,将向电子银行的业务逻 辑服务器发送一个建立安全上下文的请求。最后,您将学会与电子银行业务逻辑服务器进行实际的安全通 信。

回顾本系列的 第一篇文章,它介绍了移动银行 MIDlet 应用程序,并解释了 Kerberos 是如何满足这 种应用程序的安全要求的。文章还描述了 Kerberos 用来提供安全性的数据格式。

本系列的 第二篇 文章展示了如何在 J2ME 中生成 ASN.1 数据类型。介绍了如何用 Bouncy Castle 加密库进行 DES 加密,并用用户的密码生成 Kerberos 密钥。最后将这些内容放到一起并生成一个 Kerberos 票据请求。

在本系列文章中开发的 Kerberos 客户不要求某个特定的 Kerberos 服务器,它可以使用所有 KDC 实 现。

不管所选的是什么 KDC 服务器,必须告诉服务器移动银行 MIDlet 的用户在对 TGT 的请求中不需要 发送预认证数据( padata ,本系列第一篇文章的图 2 中显示的 KDC-REQ 结构的第三个字段)。

根据 Kerberos 规范,发送 padata 字段是可以选择的。因此,KDC 服务器通常允许配置特定的用户 ,使得对于所配置的用户不需要 padata 字段就可以接受 TGT 请求。为了尽量减少 Kerberos 客户机上 的负荷,必须告诉 KDC 服务器接受电子银行移动用户的不带 padata 的 TGT 请求。

在这个例子中,我使用了 Microsoft 的 KDC 服务器以试验基于 J2ME 的移动银行应用程序。在本文 源代码下载 中的 readme.txt 文件包含了如何设置 KDC 服务器、以及如何告诉它接受不带 padata 字段 的 TGT 请求的指导。(在我的“用单点登录简化企业 Java 认证”一文中,我使用了同一个 KDC 服务器 展示单点登录。有关链接请参阅 参考资料。)

向 KDC 服务器发送 TGT 请求

设置了 KDC 服务器后,就向它发送 TGT 请求。看一下 清单 1 中的 getTicketResponse() 方法。它 与 本系列第二篇文章中的清单 12 中的 getTicketResponse() 方法是相同的,只有一处不同:这个方法 现在包括向 KDC 服务器发送 TGT 请求的 J2ME 代码。在 清单 1中标出了新的代码,所以您可以观察在 清单 12中没有的新增代码。

在 清单 1 的 NEW CODE 部分中,我以一个现有的 DatagramConnection 对象( dc )为基础创建了 一个新的 Datagram 对象( dg )。注意在本文的最后一节中,移动银行 MIDlet 创建了我在这里用来创 建 Datagram 对象的 dc 对象。

创建了 dg 对象后,getTicketResponse() 方法调用了它的 send() 方法,向 KDC 服务器发送票据请 求。

在向服务器发送了 TGT 请求之后,清单 1 的 getTicketResponse() 方法接收服务器的 TGT 响应。 收到响应后,它将响应返回给调用应用程序。

清单 1. getTicketResponse() 方法

public byte[] getTicketResponse( )    {      byte ticketRequest[];      byte msg_type[];      byte pvno[] = getTagAndLengthBytes(ASN1DataTypes.CONTEXT_SPECIFIC,              1, getIntegerBytes(5));      msg_type = getTagAndLengthBytes(ASN1DataTypes.CONTEXT_SPECIFIC,               2, getIntegerBytes(10));      byte kdc_options[] = getTagAndLengthBytes(ASN1DataTypes.CONTEXT_SPECIFIC,                   0, getBitStringByt

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号