Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设计问题:动态更改GUI->;将实现类作为soap附件发送_Java_Web Services_Design Patterns_Architecture - Fatal编程技术网

Java 设计问题:动态更改GUI->;将实现类作为soap附件发送

Java 设计问题:动态更改GUI->;将实现类作为soap附件发送,java,web-services,design-patterns,architecture,Java,Web Services,Design Patterns,Architecture,下面是一个场景: 我有一个java前端(RCP/SWT)应用程序,目前没有身份验证支持。 但是,我必须为这个应用程序添加安全性,以便在不同的企业环境中部署它。我有一些方法,我想在这里与大家分享,并听取大家的意见。请注意,目前还没有严格的要求,因此。。我想让你考虑典型的和不典型的企业网络安全模型。 方法1 创建一个“安全”Web服务 厚客户端将在启动时调用 客户端查询当前身份验证模式的安全性,并将身份验证的实现类作为soap附件接收。接收到的类将不具有authencation逻辑,而只是描述UI

下面是一个场景: 我有一个java前端(RCP/SWT)应用程序,目前没有身份验证支持。 但是,我必须为这个应用程序添加安全性,以便在不同的企业环境中部署它。我有一些方法,我想在这里与大家分享,并听取大家的意见。请注意,目前还没有严格的要求,因此。。我想让你考虑典型的和不典型的企业网络安全模型。 方法1

  • 创建一个“安全”Web服务 厚客户端将在启动时调用
  • 客户端查询当前身份验证模式的安全性,并将身份验证的实现类作为soap附件接收。接收到的类将不具有authencation逻辑,而只是描述UI和UI上的事件。(客户端可以使用GUI工具包,如Thinlet?)
  • 加载类后,将向最终用户显示与当前设置的身份验证方法相关的UI
优点:

  • 这种方法允许我处理不同的身份验证方案。例如,如果应用程序必须根据数据库中存储的用户名和密码进行身份验证,则显示用户名和密码字段的屏幕就足够了。但是,如果用户要进行网络登录,需要输入网络名称,则UI将包含三个字段。如果客户端网络的安全模型要求基于ntlm/SSO的身份验证,用户将看不到UI。这也将为未来的身份验证方法留下空间——例如,支持特定于验证码的登录屏幕/生物识别材料/任何东西
方法2

接吻(是的,简单)

  • 用户名和密码通常是所有已知身份验证机制所需的唯一两个凭据
  • 让厚客户端查询Web服务,并让Web服务处理整个身份验证过程

我不确定上述方法是否现实/可行/常用。感谢您的帮助。

我当然不建议将类定义作为SOAP附件传输。网络类加载器更有意义,但在您的情况下仍然不需要

把属于那里的东西——UI——放进客户端。在客户端上准备好多个屏幕类型(即定义为类),并根据服务器传递的单个值激活每个屏幕类型。例如,如果传递了
AuthenticationType.CREDENTIALS
,请输入用户名/密码。如果
Authentication.SMART\u CARD
is-使用智能卡

如果要分发应用程序并在以后实现不同的身份验证屏幕,请使用。因此,所有客户端都将保证运行最新版本


了解到您的需求带来了一些限制后,请看一看。

@Bozho使用java web start(jnlp)确实有意义,因为您的基础产品支持一组身份验证方法,然后添加另一种身份验证机制,更新依赖项jar,然后应用程序从网络加载新的jar。当我们这样做时,这是非常酷的:“例如,如果传递了AuthenticationType.CREDENTIALS,则选择用户名/密码。如果Authentication.SMART_卡是-则选择智能卡。”但是,这里的想法是让客户不知道如何进行身份验证握手。从更清晰的设计/架构角度来看,如果客户端在运行时对不同的身份验证UI一无所知,您不认为这会有所帮助吗?客户端将不知道身份验证是如何完成的。它将知道从客户端请求哪些数据发送到服务器。UI如何?如果您想在xyz公司环境中支持captcha,如果您必须在另一个环境中支持NTLM,该怎么办。?用户界面必须改变——关于什么用户界面(以及所有受支持的用户界面)需要与客户机在一起的知识——这就是我试图解释的。我很理解,我说将用户界面放在客户机上对我来说是可以的。您可以调查一个网络类加载器,但这并不容易。