我们需要在Java web项目中支持基本身份验证和稍后的摘要身份验证。我怀疑
- 基本/摘要身份验证是否是web服务器中的配置(tomcat、jboss等)。我们的用户/密码位于SQL数据库中通过数据服务获取这些信息。在这种情况下,我如何配置web服务器使用数据服务进行身份验证
- 是否需要在代码中显式处理基本/摘要身份验证?就像我将收到来自Servlet和将连接到数据服务进行身份验证
在Java中,EE安全性默认是声明性的。这意味着您只需要通过一个名为Role
的抽象概念来指定您希望保护的资源。
除了JB Nizet的答案之外,JBoss AS特定的登录模块(大致相当于Tomcat的Realm实现)可以在这里找到:http://docs.jboss.org/jbosssecurity/docs/6.0/security_guide/html/Login_Modules.html
Java EE 6还支持标准化身份验证模块,这显然是许多人所未知的。这些是基于文件、基于JDBC等,通常被认为是特定于应用程序服务器/容器的。
这是通过所谓的JASPIC API(又名JASPI,又名JSR196)完成的,参见例如:
- JBoss AS7:为Web应用程序启用JASPI身份验证
- 使用JASPI实现自定义身份验证提供程序
- Glassfish Web层中的可插拔身份验证
不幸的是,JASPIC/JASPI/JSR196的采用充其量也显得乏善可陈。目前,人们似乎信任特定于AS的领域、登录模块以及让你变得更好的东西,或者只是不知道其他选择。
Basic和Digest身份验证。阅读规范或本教程,了解其工作原理。
不过,凭据的存储位置和检查方式由每个容器自行决定。Tomcat支持各种Realm实现(基于文件、基于JDBC、基于LDAP等)。