用Kerberos为J2ME应用程序上锁,第2部分 - 生成一个Kerberos票据请求 - 编程入门网
ntBytesCount + 1;
finalBytes = new byte[integerBytesCount];
finalBytes[0] = (byte)0x02;
for (int i=0; i < lengthBytes.length; i++)
finalBytes[i+1] = lengthBytes[i];
for (int j=lengthBytesCount+1; j<integerBytesCount; j++)
finalBytes[j] = byteContent[j-(lengthBytesCount+1)];
return finalBytes;
}//getIntegerBytes
// Converts a long into a byte array.
public byte[] getByteArray (long l)
{
byte byteValue[] = new byte[8];
for(int x=0; x<8; x++)
byteValue[x] = (byte)(int)(l >>> (7 - x) * 8 & 255L);
return byteValue;
}
}//KerberosClient class
用Kerberos为J2ME应用程序上锁,第2部分 - 生成一个Kerberos票据请求(13)时间:2011-08-05 IBM Faheem Khan在本系列的 第一篇文章 对图 2、清单 1 和表 2 的讨论中我讨论过 TGT 请求的结构。回想在那里的 讨论中,TGT 请求包含四个数据字段: pvno 、 msg-type 、 padata 和 req-body 。生成 pvno 和 msg-type 字段非常简单,因为这两个字段分别只包含一个整数(如在 第一篇文章 中“请求 TGT”一节 中提到的, pvno 为 5, msg-type 为 10)。 您只需要调用 getIntegerBytes() 方法,向这个方法传递这个整数值。 getIntegerBytes() 方法返 回以 ASN.1 字节数组表达的 INTEGER 结构,您将它传递给 getTagAndLengthBytes() 方法。这个方法将 返回 pvno 或者 msg-type 字段的完整 ASN.1 表达。这就是我在清单 12 中的 getTicketResponse() 方 法的开始时生成 pvno 和 msg-type 字段的方法。 在生成 pvno 和 msg-type 字段后,下一步就是生成 padata 字段。这个字段是可选的。大多数 KDC 服务器有一个设置选项,可以对单独的客户机进行配置。系统管理员可以将 Kerberos 服务器设置为特定 客户可以发送不包括 padata 字段的 TGT 请求。 为了减轻在资源有限的 J2ME 设备上的处理负担,我假定电子银行有一个允许无线移动用户发送不带 padata 字段的 TGT 请求的 Kerberos 服务器(并且我将在本系列的下一篇文章中展示如何设置 Keberos 服务器使它具有这种行为)。因此我将在要生成的 TGT 请求中略去 padata 字段。所以,在生成 pvno 和 msg-type 字段后,我就直接开始生成 req-body 结构,这需要几步。 生成请求正文 在清单 12 的 getTicketResponse() 方法中,我的请求正文( req-body 结构)生成策略是生成结构 的所有单独的子字段,然后将它们串接到一起并包装到一个 SEQUENCE 中以构成请求正文。 回想在 第一篇文章 图 2 的讨论中, req-body 的子字段有(去掉了一些可选字段):
我将按它们在上面列表中的顺序生成这些字段。因此,第一项任务是生成 kdc-options 字段。 因为我不想使用任何 KDC 选项,所以我不需要对生成 kdc-options 字段进行任何逻辑处理。我只是 使用一个全为零的 5 字节数组作为其内容。看一下清单 12 的 getTicketResponse() 方法中 byte noOptions[] = new byte [5]; 这一行。这个方法实例化一个名为 noOptions 的 5 字节数组,它初始化 为五个零。 下一行( byte kdc_options[] = getTagAndLengthBytes (ASN1DataTypes.Context_Specific, 0, getBitStringBytes(noOptions)) )执行两项任务: 它首先向 getBitStringBytes() 方法传递 noOptions 字节数组,它返回用 ASN.1 的位字符串表达的 5 个零。 然后它将位字 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |