2009-07-28 75 views
1

我们目前有一组Web服务公开了各种不同客户端类型和角色的接口。声明性的Web服务授权和WSDL打字

背景:

  • 的Web服务应用程序代码是(并会留)写在一个弱类型的动态语言。

  • 认证是seperately处理,这个职位是授权

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

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

    我绝对不想开始讨论任何一种方法的优点。

问题:

我想实现的方案来声明同时定义输入

  1. 复杂WSDL打字&输出用于公开的方法和
  2. 需要授权TRAITS和/或ROLES来使用暴露的方法。

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

对于(任何)弱类型的动态语言,是否存在这样的实现?是否有完全外部实现我们可以建立apon?

回答

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

+0

从OP:“Web服务应用程序代码是(并将保持)以弱类型动态语言编写的。” – 2009-08-06 11:21:00