基于角色的授权
使用授权信息以确定调用者是否拥有请求服务必需的特权。
下图说明了在授权期间使用的进程。

由 Web 协调程序处理 Web 客户机对 Web 资源的访问。 企业JavaBeans来自 Java™ 客户端的 (EJB) 资源访问(无论是企业 Bean 还是 servlet)均由 EJB 协作者处理。 EJB 协调程序和 Web 协调程序从对象请求代理 (ORB) 的当前对象中抽取客户机凭证。 在认证过程中,将客户机凭证设置为在 ORB 当前对象中接收到的凭证。 将资源和接收到的凭证提供给 WSAccessManager 访问管理 器以检查是否允许客户机访问请求的资源。
- 资源许可权模块帮助确定给定资源的必需角色。 此模块使用应用程序启动期间由安全性运行时构建的资源至角色的映射表。 要构建资源至角色的映射表,安全性运行时将读取企业 Bean 或 Web 模块(ejb-jar.xml 文件或 web.xml 文件)的部署描述符
- 授权表模块查阅角色至用户或组的映射表,以确定是否为客户机授予了一个必需的角色。 角色至用户或组的映射表(也称为授权表)是在应用程序启动期间由安全性运行时创建的。
要构建授权表,安全性运行时将相应地读取应用程序绑定文件
ibm-application-bnd.xmi文件或ibm-application-bnd.xml文件。支持的配置:为了IBM®扩展和绑定文件,.xmi或者.xml文件扩展名有所不同,具体取决于您是否使用预Java EE 5 应用程序或模块或Java EE 5 或更高版本的应用程序或模块。 一个IBM扩展或绑定文件被命名ibm-*-ext.xmi或者ibm-*-bnd.xmi其中 * 是扩展或绑定文件的类型,例如app,application ,ejb-jar , 或者web。 存在下列条件:然而, Java EE 5 或更高版本的模块可以存在于包含预Java EE 5 个文件并使用.xmi文件扩展名。
ibm-webservices-ext.xmi、ibm-webservices-bnd.xmi、ibm-webservicesclient-bnd.xmi、ibm-webservicesclient-ext.xmi 和 ibm-portlet-ext.xmi 文件继续使用 .xmi 文件扩展名。
使用授权信息以确定调用者是否拥有请求服务必需的特权。 您可以采用很多方式存储授权信息。 例如,对 于每种资源,您可以存储包含用户和用户特权列表的访问控制表。 存储信息的另一种方法是将资源列表与每个用户的相应特权关联起来。 此列表称为能力列表。
WebSphere® Application Server使用 Java 2 平台,Enterprise Edition( J2EE )授权模型。 在此模型中,授权信息组织如下:
在应用程序汇编期间,将调用方法的许可权授权给一个或多个角色。 角色是一组许可权;例如,在银行业 务应用程序中,角色可以包括 teller、supervisor、clerk 和其他与行业相关的职位。 teller 角色与运行方法(例如,withdraw 和 deposit 方法)的许可权相关联,这些方法与管理帐户中的现金相关。 未授予 teller 角色关闭帐户的许可权;将此许可权授权给 supervisor 角色。 应用程序汇编员定义了每个角色的方法许可权的列表。 此列表存储在应用程序的部署描述符中。
J2EE 模型未定义下面这三个特殊主体集:AllAuthenticatedUsers、AllAuthenticatedInTrustedRealms 和 Everyone。 特殊主体集是产品定义的一个实体,是在用户注册表以外定义的。 此实体一般用于表示注册表中的一类用户或组。
- AllAuthenticatedUsers 主体集允许所有已认证的用户访问受保护方法。 只要用户能够成功通过认证,就允许用户访问受保护资源。
- AllAuthenticatedInTrustedRealms 主体集允许所有已认证外部用户(已绑定到其他领域的用户)访问保护方法。 只要用户能够成功通过认证,就允许用户访问受保护资源。
- Everyone 主体集允许对受保护资源进行无限制访问。 用户不必进行认证就可以访问;此特殊主体集访问受保护方法时就像资源不受保护一样。
在应用程序的部署期间,将真实的用户或用户组指定给这些角色。 将用户指定给角色时,该用户获取授予该角色的所有方法许可权。
应用程序部署者不需要了解各种方法。 通过将角色指定给方法,应用程序汇编员简化了应用程序部署者的作业。 部署者使用表示方法的语义分组的角色,而不是使用一组方法。
可以将用户指定给多个角色;授予给用户的许可权就是授予给每个角色的许可权的并集。 另外,如果认证 机制支持用户分组,那么可以将这些组指定给角色。 将组指定给角色与将每个单独的用户指定给角色具有相同效 果。
- 这样提高了授权检查期间的性能。 通常存在的组比用户要少得多。
- 通过使用组成员资格控制资源访问,提供了更大的灵活性。
- 支持添加用户和从产品环境外的组中删除用户。 此操作优于添加和删除它们WebSphere Application Server角色。 停止并重新启动企业应用程序,以使这些更改生效。 在生产环境中,此操作具有很强的破坏性。
在运行时, WebSphere Application Server根据用户的身份信息以及用户与角色的映射来授权传入的请求。 如果用户属于任何有权运行方法的角色,那么会为请求授权。 如果用户不属于任何拥有许可权的角色,那么请求被拒绝。
- getCallerPrincipal:此方法用于检索用户标识信息。
- isCallerInRole:此方法用于检查特定角色的用户标识信息。
- getRemoteUser
- isUserInRole
- getUserPrincipal
这些方法符合企业 Bean 方法的目的。