这是我根据前两天阅读的材料得到的澄清。
最基本的东西-提供的所有应用程序服务器都提供了一个标识存储,可以存储用户和组。应用程序可以引用此标识存储,就像在服务器上部署它一样。
应用程序如何执行身份验证?
基于纯JEE框架,认证方法可以根据其保护的应用类型进行分类:
声明的:
我们使用部署描述符或@annotations来指定这些身份验证启用码:
a、 哪些选项用于呈现身份验证,即basic(浏览器弹出窗口)、自定义表单、SSL等。
c、 允许哪些用户或角色(通过组)进行身份验证或授权。
程序化
这里我们使用内置接口HttpServletRequest中的security methods()。
a、 请求。身份验证:弹出一个登录框来收集凭据。
b、 请求。login:此方法接受不带pop的login/password
还有其他几种方法也可用,它们提供了身份验证用户的更多详细信息,如isUserInRole(是否在给定的角色中)、GetRemoteUser(提供用户名)等。
EJB身份验证
ejb也可以以与基于web的应用程序相同的方式进行安全保护。i、 e.具有声明性或程序性安全性。对这一发言提出一些警告,但这些警告与目前的讨论无关。
为了理解这一点,让我们了解一个实用的场景:
要解决上述情况,必须有一种可插入的方式来编写用于身份验证的代码,其中,开发人员将只负责提及(而不是编码)必须使用哪个身份验证提供程序,并编写代码来调用该特定提供程序的loginModule,后者最终拥有用于对给定用户/调用方进行身份验证的代码。
这种提供可插入认证的框架在LDAP世界中称为可插入认证模块。
JAAS是PAM框架的java实现。使用JAAS,可以在应用程序下插入更新的或附加的身份验证技术,而无需修改应用程序代码。
在认证之后,JAAS还执行授权。
JAAS是否以相同的方式在不同的企业应用服务器(如Weblogic、JBoss等)上实现。
嗯,“它可以是”,“但通常不是”以相同的方式在不同的应用服务器上实现。
这是因为应用服务器可以提供自己的库,这些库可以用来实现JAAS。
希望这能为没有开发背景的人澄清JEE安全模型。