GT4开发:从头开始进行相互的身份验证 - 编程入门网
MIC,而不需要为双方传输数据本身。签名是 byte[] getMIC (byte[] inMsg, int offset, int len, MessageProp msgProp),其中 (inMsg) 是要发送的消息,(offset) 是消息开始的位置,而 (len) 是消息的长度。还传递了一个 (MessageProp),它用来说明所需要的 QOP。通常会指定 0 作为 QOP 的值来请求默认 QOP。
清除工作 清除操作是由 Client 和 Server 来执行的,通过关闭 socket,并释放系统资源和存储在上下文对象中的密码信息,然后使这个上下文无效。 清单 10. 关闭 socket 并释放系统资源和密码信息/** If mutual authentication did not take place, then only the* client was authenticated to the server. Otherwise, both* client and server were authenticated to each other.*/if (context.getMutualAuthState())System.out.println("Mutual authentication took place!"); context.dispose();socket.close(); 测试新 GSI 应用程序 在测试这个新的 GSI 客户机服务器之前,第一个步骤是使用启用了 GSI 的工具(例如 CoG Kit 或 Globus Toolkit)创建一个代理证书。 图 1. 使用 CoG 工具包输出 grid-proxy-init 的调用结果 本文中展示的应用程序可以作为一个 Eclipse Java 项目进行发布。将这个项目导入到您的工作空间中,然后: 启动 Server 运行 Client 通过查看 Client 和 Server 的控制台输出结果来检验相互身份验证。 输出结果应该如下所示: 清单 11. 输出结果Client: Connected to server localhost/127.0.0.1Client: Loaded proxy file: C:\DOCUME~1\Owner\LOCALS~1\Temp\x509up_u_ownerClient Credential: /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir Silva Remaining life time:9349Client: Security context Established! Client is /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir SilvaServer is /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir SilvaClient: Mutual authentication took place! Server Credential: /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir SilvaServer: Waiting for incoming connection...Server: Got connection from client /127.0.0.1Server: Will send token of size 1480 from acceptSecContext.Server: Will send token of size 75 from acceptSecContext.Server: Context Established! Client is /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir SilvaServer is /C=US/L=Raleigh/O=ACME/OU=IT/CN=Vladimir SilvaServer: Mutual authentication took place!Server: Closing connection with client /127.0.0.1Server: Waiting for incoming connection...如果事情并未预期进行,就请查看下面的故障检修一节的内容以查看问题的线索。 故障检修 当您有一个无效或过期的代理时,就会出现一个最简单的问题。这可能是由于 CoG/GT4 工具包安装、证书遭到破坏、I/O 错误等问题而引起的。常见的错误消息如下所示。 清单 11. 错误消息Got connection from client /127.0.0.1GSSException: Expired credentials detectedat org.globus.gsi.gssapi.GlobusGSSManagerImpl.createCredential(GlobusGSSManagerImpl.java:118)at org.globus.gsi.gssapi.GlobusGSSManagerImpl.createCredential(GlobusGSSManagerImpl.java:64)... 无效的安全上下文通常会由于上下文循环中的编码错误而产生 ?? 例如,交换使用 GSS 和 GSI 中的方法。记住 GSI 是对 GSS API 的一个扩展 ?? 因此 GSS 客户机会无法与 GSI 服务器建立一个上下文。 清单 12. 错误消息Waiting for incoming connection...Got connection from client /127.0.0.1unwrap failed. Caused by GSSException: Security context init/accept not |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |