我目前正在开发一个在 JBoss AS 7 上运行的项目,该项目需要来自各种来源的身份验证。我试图了解结合起来提供身份验证的各种组件。
我对这一切如何组合在一起有一些假设/猜测,但我需要确保我的理解是正确的。所以下面是我理解的 JBoss AS7 的身份验证过程。
您有一个安全领域,它定义了如何对用户进行身份验证。然后将此领域暴露给您的应用程序,以保护其中的部分或全部。在 AS7 中,这是在 <subsystem xmlns="urn:jboss:domain:security:1.0"> 元素中配置的。
可以将领域配置为使用登录模块针对各种来源对用户进行身份验证,例如数据库、LDAP、本地文件或其他东西。可以定义多个登录模块,并且您可以指定登录模块的某些组合必须“成功”才能进行身份验证。
实际的用户名和密码是通过定义在 <login-config> 元素中的 web.xml 文件(对于 servlet)中定义的机制传入的。
假设上述过程是正确的(也可能不是):
- 整个身份验证过程是否属于 JAAS 之类的规范,或者 JAAS 只是此过程的一小部分或可选部分?
- 是否所有类型的 <auth-methods>(即 BASIC、DIGEST 和 FORM)都适用于各种登录模块?这个页面似乎不建议,但我还没有看到任何与 <login-module> 选项 <login-config> 选项匹配的明确文档。
- 从登录配置到登录模块的用户名和密码流程似乎很简单,但是像 OpenID 或 OAuth 这样有中间步骤(如重定向到外部登录页面)的系统会发生什么?
- Seam 3 Security、Apache Shiro和Spring Security等项目如何融入这张图片?