Web Service 安全性授权模型

以 Servlet 或 Enterprise JavaBeans (EJB) 形式实现的提供者应用程序可以使用 Web Service 并且受 Web Service 安全性保护。Java Platform, Enterprise Edition (Java EE) 基于角色的授权可用于控制对以 Servlet 或 EJB 形式实现的 Web Service 提供者应用程序的访问。虽然使用相同方式为 Servlet 和 EJB 实现配置了安全角色,但是对服务的访问因实现的不同而不同。

对于以 Servlet 形式实现的提供程序,Web 容器通过 HTTP 基本认证来执行基于角色的授权。
  1. 安全性令牌在 SOAP 请求的 HTTP 头中进行传递。
  2. Web 容器对安全性令牌进行认证,然后对用户执行基于角色的授权。
  3. 用户授权成功之后,Web 容器将使用入站消息调用 Web Service 引擎。

下图说明了基于角色的授权过程的每一个步骤针对 Servlet 发生的位置。

图 1. Web Service 安全性中的 Servlet 授权. 此图显示了 Servlet 实现的基于角色的授权过程。
Web Service 安全性中的 Servlet 授权
对于以 EJB 形式实现的提供程序,EJB 容器执行基于角色的授权。
  1. 用户标识的安全性令牌在 SOAP 请求的安全性头中进行传递。
  2. Web Service 安全性对该令牌进行认证。
  3. 通过调用者配置,Web Service 安全性设置当前线程上的已认证令牌的标识。
  4. 当 Web Service 引擎调用端点时,EJB 容器对当前线程上的标识执行基于角色的授权。

下图说明了基于角色的授权过程的每一个步骤针对 EJB 发生的位置。

图 2. Web Service 安全性中的 EJB 授权. 此图显示了 EJB 实现的基于角色的授权过程。
Web Service 安全性中的 EJB 授权

当 Web Service 提供程序以 Servlet 形式实现时,Web Service 安全性在 SOAP 请求的安全性头中传递的令牌不能用于基于角色的授权以访问服务。

当 Web Service 提供程序以 EJB 形式实现时,如果活动 Web Service 安全性约束中有该令牌的调用者配置,那么 Web Service 安全性在 SOAP 请求的安全性头中传递的令牌只能用于基于角色的授权以供 EJB 容器访问服务。

以 EJB 形式实现的 Web Service 提供程序还可以使用 Web 容器来执行基于角色的授权。为了执行此操作,图 Web Service 安全性中的 EJB 授权 中所示的路由器 Servlet 受 HTTP 基本认证保护。完成此操作后,过程继续执行,如图 Web Service 安全性中的 Servlet 授权 中所示。

当活动 Web Service 安全性约束中有入站令牌的调用者配置时,会在当前线程上的安全上下文中将该令牌设置为 runAs 标识。 受保护的提供者应用程序本身可以根据该标识来制定权限决策。这同时适用于 Servlet 和 EJB。

提示: 虽然 WS-Security 令牌使用者无法对 Servlet 执行基于角色的授权,但是您可以创建定制登录模块以针对用户注册表中的特定组验证入站用户。有关如何对 UsernameToken 执行此操作的示例,请阅读“使用堆栈化 JAAS 登录模块替换 UsernameToken 使用者的认证方法”。

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_secauthmodel
文件名:cwbs_secauthmodel.html