快速业务通道

GT4开发:从头开始进行相互的身份验证 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
= CoGProperties.getDefault();byte proxyBytes[] = readBinFile( cog.getProxyFile() );

下一个步骤是获得 ExtendedGSSManager 对象的实例。这个类是为其他重要 GSS-API 类提供工厂服务,它提供了有关所支持机制的信息。它可以创建实现下面这 3 个 GSS-API 接口的类实例:GSSName、GSSCredential 和 GSSContext。它还具有几个方法来查询可用机制列表和每种机制所支持的名称类型。默认 ExtendedGSSManager 子类的一个实例可以通过静态方法 getInstance 来获得。

ExtendedGSSManager manager =(ExtendedGSSManager)ExtendedGSSManager.getInstance();

下一个步骤是调用一个工厂方法获得一组机制的凭证。

清单 6. 调用工厂方法来获取凭证GSSCredential credential = manager.createCredential(proxyBytes, // proxy dataExtendedGSSCredential.IMPEXP_OPAQUE,GSSCredential.DEFAULT_LIFETIME, // default life timenull, // OID MechanismGSSCredential.INITIATE_AND_ACCEPT);System.out.println("Client Credential: " + credential.getName()+ " Remaining life time:" + credential.getRemainingLifetime());

参数有:

一个使用诸如 grid-proxy-init 之类的命令创建的导出缓冲区或代理证书的字节数组。 ExtendedGSSCredential.IMPEXP_OPAQUE 意味着导出缓冲区是一个不透明的缓冲区,适合存储到内存或磁盘中,或者传递给其他进程。 一个生存期值 在本例中,使用的是默认值。 导出凭证希望使用的机制 可以为空,表示系统默认值。 凭证使用标记 在本例中,INITIATE_AND_ACCEPT 请求用于上下文的初始化和接受。

建立安全上下文

在两个应用程序可以使用 ava GSS-API 安全交换消息之前,它们必须使用自己的凭证建立一个联合的安全上下文。

在 Client 上,ExtendedGSSManager.createContext 是在发起端创建上下文的工厂方法。第一个参数是目标端的名字。Null 表示底层身份验证机制所提供的默认值。第二个参数是这种机制的 Object ID(OID)(同样,null 表示使用默认值)。第三个参数是上一个步骤中的 GSS 凭证,最后一个参数是这个上下文的默认生存期。

清单 7. 建立联合的安全上下文GSSContext context = null;GSIGssOutputStream gssout = null;GSIGssInputStream gssin = null;

context = manager.createContext(null,null,credential,GSSContext.DEFAULT_LIFETIME);

在对上下文进行实例化之后,在与上下文接收者实际建立上下文之前,上下文的发起者可以选择设置不同的选项,确定所需要的安全上下文特性:

相互身份验证 上下文的发起者始终要对接收者进行身份验证。如果发起者请求相互身份验证,那么接收者也可以对发起者进行身份验证。 机密性 请求机密性意味着您请求为上下文方法指定的封装进行加密。 完整性 将要求 wrap 和 getMIC 方法的完整性。在请求完整性时,在调用这些方法时会生成一个密码标记,称为 Message Integrity Code(MIC)。 context.requestCredDeleg(false);context.requestMutualAuth(true);

在 Server 上,Server 端所需的唯一参数是凭证。必须获得 GSI I/O 流才能来回向客户机发送数据。

GSSContext context = manager.createContext(credential);

GSIGssOutputStream gssOut = new GSIGssOutputStream(outStream, context);GSIGssInputStream gssIn = new GSIGssInputStream(inStream, context);

在 Client 实例化一个 GSSContext 并指定所需要的上下文选项之后,它就可以真正与 Server 建立安全上下文。每次交互都会使用一个循环来实现:

调用上下文的 initSecContext 方法 如果是第一个调用,这个方法就会传入一个空标记符号。否则,它就会传入一个最近一次由 Server 发送给 C

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