1

我们目前有一组 Web 服务,将接口暴露给各种不同的客户端类型和角色。

背景:

  • Web 服务应用程序代码是(并将保留)用弱类型动态语言编写的。

  • 身份验证是单独处理的,这篇文章是关于Authorization的。

  • Web 服务公开的所有操作都是无状态的。

  • Web 服务同时使用SOAP 和 REST(JSON)。

    我绝对没有兴趣开始讨论这两种方法的优点。

问题:

我想实现一个同时以声明方式定义的方案

  1. 公开方法的输入和输出的复杂 WSDL 类型化,以及
  2. 需要授权 TRAITS 和/或角色来使用公开的方法。

我想让声明与接口定义(比如方法属性)内联,或者在外部定义(比如通过 YAML 文件),但不在数据库中动态管理。

(任何)弱类型动态语言是否已经存在任何这样的实现?我们可以构建完全外部的实现吗?

4

2 回答 2

0

如果您使用的是 Java,那么 Spring Security(以前称为 ACEGI)将允许您注释您的方法,以要求您希望使用任何用户角色作为执行条件。

这是一个例子:

package com.habuma.expectations.springsecurity.intercept;
import org.springframework.security.annotation.Secured;

public class SecuredObject {
   @Secured( {"ROLE_SECRET_AGENT"} )
   public String getSecuredData() {
      return "Top-Secret Data";
   }
}

缺少该角色的用户的请求将引发异常。您可以自由选择任何您希望的身份验证方案,并且使用 SOAP 或 REST 都没有关系。它没有比注释更具声明性。我已经在许多 Web 服务中成功地使用了这种方法。

于 2009-08-05T16:50:36.857 回答
0

Gah,在这个话题上一无所获......重新询问我已经可以预测的细节会让事情变得混乱:-(

于 2009-08-09T23:53:57.540 回答