声明性网络服务授权& WSDL类型

时间:2009-07-28 09:56:56

标签: web-services wsdl authorization dynamic-languages

我们目前有一组Web服务公开接口,用于各种不同的客户端类型和角色。

背景

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

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

    < / LI>
  • 网络服务公开的所有操作都是无状态的。

  • 网络服务谈话 SOAP和REST(JSON)。

    我绝对不想开始讨论这两种方法的优点。

问题:

我想实现一个方案,以声明性地同时定义

  1. 输入的复杂WSDL类型&amp;暴露方法的输出,和
  2. 要求使用授权特征和/或ROLES来使用暴露的方法。
  3. 我想让声明与接口定义(比如方法属性)内联,或者外部定义(比如通过YAML文件),但在数据库中动态管理。 / p>

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

2 个答案:

答案 0 :(得分:0)

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

这是example:

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,则无关紧要。它没有比注释更具说明性。我已经在许多网络服务中成功使用了这种方法。

答案 1 :(得分:0)

Gah,在这个话题上根本无处可寻......重新询问我已经预测过的细节会让人感到困惑: - (