声明式 Web 服务授权和授权 WSDL 打字

发布于 2024-07-29 13:05:08 字数 682 浏览 3 评论 0原文

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

背景:

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

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

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

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

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

问题:

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

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

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

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

We currently have a group of web-services exposing interfaces to a variety of different client types and roles.

Background:

  • The web-service application code is (and will stay) written in a weakly typed dynamic language.

  • Authentication is handled seperately, this post is about Authorisation.

  • All operations exposed by the web-services are stateless.

  • The web-services talk both SOAP and REST(JSON).

    I'm definitely not interested in starting a discussion about the merits of either approach.

Question:

I'd like to implement a scheme to declaratively define simultaneously

  1. complex WSDL typing of inputs & outputs for exposed methods, and
  2. required Authorisation TRAITS and/or ROLES to make use of exposed methods.

I'd like to have the declarations either inline with the interface definitions (say as method attributes), or externally defined (say via YAML files), but not managed dynamically in the database.

Does any such implementation already exist for (any) weakly typed dynamic language? Are there wholly external implementations we could build apon?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤君无依 2024-08-05 13:05:09

如果您使用 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,都没有关系。 它并没有比注释更具声明性。 我已经在许多网络服务中成功地使用了这种方法。

If you're using Java, then Spring Security (formerly ACEGI) will let you annotate your methods to require whatever user roles you wish as a condition of execution.

Here's an 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";
   }
}

Requests by users lacking the role will throw an exception. You're free to choose whatever authentication scheme you wish, and it won't matter if you're using SOAP or REST. It doesn't get much more declarative than annotations. I've used this approach successfully in a number of webservices.

篱下浅笙歌 2024-08-05 13:05:09

啊,在这个话题上毫无进展……重新询问我已经可以预测的具体细节会让事情变得混乱:-(

Gah, getting nowhere at all on this topic... re-asking with specifics that I can already predict will confuse matters :-(

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文