我们目前有一组Web服务公开接口,用于各种不同的客户端类型和角色。
背景
Web服务应用程序代码(并将保留)以弱类型动态语言编写。
身份验证 是单独处理的,这篇文章是关于 授权 。
< / LI>网络服务公开的所有操作都是无状态的。
网络服务谈话 SOAP和REST(JSON)。
我绝对不想开始讨论这两种方法的优点。
问题:
我想实现一个方案,以声明性地同时定义
我想让声明与接口定义(比如方法属性)内联,或者外部定义(比如通过YAML文件),但不在数据库中动态管理。 / p>
(任何)弱类型动态语言是否已存在任何此类实现?我们是否可以构建完全外部实现?
答案 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,在这个话题上根本无处可寻......重新询问我已经预测过的细节会让人感到困惑: - (