代码之家  ›  专栏  ›  技术社区  ›  Jay

如何在厚客户端中设计身份验证,以确保故障安全?

  •  6
  • Jay  · 技术社区  · 14 年前

    下面是一个用例:

    我有一个桌面应用程序(使用EclipseRCP构建),它在开始时弹出一个对话框,其中包含“用户名”和“密码”字段。一旦最终用户输入了用户名和密码,就可以联系服务器(一个Spring远程servlet,客户端是Spring httpclient: approaches here ,并在服务器端执行身份验证。

    与上述场景相关的几个问题:

    1. 如果说这个认证服务要停止,那么处理进一步程序的最佳方法是什么?身份验证是我做不到的事情。在“有限”模式下运行桌面客户端是个好主意吗?例如,重要功能/菜单/视图将被禁用,应用程序的其余部分将可访问?
    2. 我是否应该在另一台计算机上运行备份身份验证服务,作为备份?
    3. 此方案中的一般最佳实践是什么?我记得我读过关于谷歌齿轮的文章,它会让你离线编辑和做一些事情——像这样的东西应该被设计出来吗?

    请告诉我你的设计/建筑评论/建议。谢谢你的帮助。

    4 回复  |  直到 14 年前
        1
  •  5
  •   dbyrne    14 年前

    简单的答案是:不要让认证服务中断!

    确保您的身份验证服务在虚拟IP后面的集群、负载平衡环境中运行。这样,您就可以避免在某个服务器停机的情况下停机。这不仅适用于服务本身,还适用于它所依赖的任何数据源。

    显然,没有一个系统是完全故障安全的,但是您应该能够使正常运行时间接近100%,这样就不需要为桌面客户机构建“有限”模式。

        2
  •  3
  •   Pete    14 年前

    我是否应该在另一台计算机上运行备份身份验证服务,作为备份?

    对!这是最好的解决方案。这个问题应该在网络/基础设施级别上处理,而不是在客户机上。

    如果 应用程序中有一些有用的部分仍然可以在没有网络访问的情况下工作(例如,路由器关闭,网卡弹出),可以考虑选项1。将所需的工作量与此可能性以及应用程序的重要性进行抵消。

        3
  •  2
  •   thetaiko    14 年前

    如果说这个认证服务 如果要下楼,会是什么? 进一步处理的最佳方法 诉讼程序?身份验证是 我做不到的事。 会在一个 “有限”模式是个好主意吗?为了 实例,重要 功能/菜单/视图将被禁用, 其余的申请将 容易接近?

    以有限的方式运行桌面客户端是一个非常好的主意。想象一下,如果你不能写一封电子邮件,佩帕附件,或在一个电子邮件客户端做任何事情,如果你没有登录。良好的用户体验需要离线工作的能力。

    我需要备份身份验证吗 在其他服务器上运行的服务 机器,作为备份工作?

    虽然我不完全同意德比恩的观点,但其他人已经很好地回答了这个问题。即使您的所有网络和服务器都运行良好,停机也是不可避免的,并且桌面客户机和服务器之间的通信并不总是完美的。

        4
  •  1
  •   Slartibartfast    14 年前
    1. 如果说这个认证服务要关闭,那么 进一步处理的最佳方法 诉讼程序?身份验证是 我做不到的事。 会在一个 “有限”模式是个好主意吗?为了 实例,重要 功能/菜单/视图将被禁用, 其余的申请将 容易接近?

    没有服务器,客户端是否有用?用户可以做什么?如果是这样,您希望用户能够在不进行身份验证的情况下执行这些操作吗?这就是你问题的答案。

    当你说:“身份验证是我做不到的事情”时,你的意思还不清楚。您的意思是有一些特性要求用户经过身份验证,或者这是其他人强加的要求,还是?(你为什么不能放弃它?)

    1. 我应该在 不同的机器,作为 备份?

    在上述情况下,您的客户有多大用处?如果这是非常有用的,那么您可以根据这个决定以及在维护备份服务器上花费的费用,来确定仅通过身份验证的功能的价值。

    如果您的应用程序在没有身份验证的情况下是无用的,那么根据您的决定,在备份身份验证服务器上投资多少,取决于当您的用户无法进行身份验证时它会花费多少成本。

    1. 此方案中的一般最佳实践是什么?我 记住阅读谷歌齿轮 它将如何让你编辑和做 离线的东西-应该像 这是设计的?

    如果有一种方法可以让有用的数据离线,我认为这是个好主意,但是我倾向于将我的信息保存在云中,因为我无法控制它或备份它。开发在线和离线的能力要花费时间和金钱,而不是两者中的一个。这是对离线时应用程序对用户有多大价值的判断调用。