java - Web 服务中关于身份验证失败的用户通知方式哪种更好?

标签 java web-services

这是我第一次尝试开发网络服务。身份验证是通过在用户请求的上下文中发送登录名和密码(使用此示例: http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/ ),然后从每个 WS 方法调用身份验证方法来实现的。但在这种情况下,哪种方式通知用户身份验证失败更好呢?抛出异常(SOAP 错误)?或者还有其他更好的方法吗?

附注抱歉我的英语不好

最佳答案

阿尔乔姆,

SOAP 错误大致类似于程序异常,因此我将返回 SOAP 错误

  • 不同的故障代码(即错误编号)和
  • “普通”故障字符串,适合向用户显示;和
  • 包含“技术细节”的故障详细信息,例如底层异常和堆栈跟踪。

这为您提供了两全其美的优点:简单性和灵 active 。只是说,在服务实现中,您捕获 AuthenticationFailureException 并使用

构建“SOAP 错误响应”
  • 故障代码 = 5,
  • FaultString =“身份验证失败”,并且
  • FaultDetail = "AuthenticationFailureException: blah blah\n "

因此,在编程时,您已经拥有了准确查看问题所在所需的一切,而在生产中,服务使用者(即表示层)负责处理 SOAP 错误,以便向用户显示适当的错误信息。向用户显示的确切内容永远不应该被确定为服务,尤其是在故障情况下。这显然是表示层的职责。

还有一个改进...请务必针对“身份验证服务当前不可用”的场景使用单独的异常类型(和肥皂故障代码),这样用户就不会徒劳地不断重试,担心他们忘记了密码,或者被黑客攻击,或者其他什么。

这是一篇关于 Using SOAP Faults 的简洁明了的 MSDN 文章,它适用于 Java 和 .NET Web 服务。

干杯。基思。

关于java - Web 服务中关于身份验证失败的用户通知方式哪种更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801279/

相关文章:

java - 从字符串中包含的 XML 的嵌套标记获取值

java - Mkdir 创建父目录(如果不存在)

jquery - JSONP:是否需要回调?

web-services - 在哪里可以找到使用WSclient类的jar?

java - 使用java获取REST Web服务中http请求的内容

php - 构建 Reducisaurus URL

java - 无法在 tomcat 上访问 webservice 出现 500 错误

java - 对 <T extends Class> 行为感到困惑

java - 使用junit启动和控制spring应用程序

java - 我如何解决 eclipse 延迟问题