Security 如何使用Drupal保护Java REST服务?

Security 如何使用Drupal保护Java REST服务?,security,drupal,authentication,rest,jakarta-ee,Security,Drupal,Authentication,Rest,Jakarta Ee,我正在创建一个使用Drupal7内容管理系统的web应用程序。web页面大量使用JQuery和AJAX AJAX调用命中了REST服务,这些服务实际上是使用JAVA实现的。Apache正在运行Drupal7,并配置为通过JavaEE服务器(JBossAS7)传递对RESTURL的任何调用。一切都通过SSL 我需要授权和验证对REST服务的调用,并访问当前从Java应用程序登录到Drupal的用户的用户名或ID。问题是。。。怎么 由于AJAX调用是对同一个Apache服务器(而不是单独的服务器等)

我正在创建一个使用Drupal7内容管理系统的web应用程序。web页面大量使用JQuery和AJAX

AJAX调用命中了REST服务,这些服务实际上是使用JAVA实现的。Apache正在运行Drupal7,并配置为通过JavaEE服务器(JBossAS7)传递对RESTURL的任何调用。一切都通过SSL

我需要授权和验证对REST服务的调用,并访问当前从Java应用程序登录到Drupal的用户的用户名或ID。问题是。。。怎么

由于AJAX调用是对同一个Apache服务器(而不是单独的服务器等)进行的,所以所有事情都发生在同一个http会话中,所以我希望这将非常容易

我想到的事情:

  • 配置一个java安全拦截器,该拦截器在本地调用一个自定义 仅可访问)drupal服务,以某种方式读取会话id和 返回登录的用户名
  • 创建一个“dumb”drupal REST服务作为我所有REST调用的网关,该服务在传递到Java后端服务之前授权/认证然后注入用户名
  • 在上的文章让我想知道,如果调用一个Drupal服务(就在每个Java服务会话的开始)并获取一个Drupal sessionID并返回当前用户及其角色,我是否可以侥幸逃脱。我可以在我的Java服务中配置它,这样它就可以每隔x秒或y次调用重新生成此调用,以检查角色更改或注销
其他人是怎么做的?这一定是一个需要解决的常见问题,不是吗?如果没有,您应该做些什么来通过AJAX安全地访问经过身份验证的服务?我不想在Drupal之外引入第二个用户控制过程,除非这是不可避免的。干的:)


谢谢-这让我很难堪

看看你在做什么,尽量让事情变得简单,我会选择第一种选择的变体。这基本上就是当前模块所做的,尽管它使用唯一的授权令牌。工作流程如下所示:

  • 当登录用户加载页面时,将生成一个唯一的令牌并存储在Drupal数据库中,然后发送到浏览器
  • 当浏览器连接到node.js服务器时,它会将auth令牌与请求一起发送
  • node.js服务器在第一次收到带有令牌的请求时,将连接到Drupal站点上的web服务,并验证令牌是否有效,并发回有关用户的任何信息,以及他们有哪些角色等
  • 然后node.js服务器将其存储在内部以备将来的请求,这样就不必为每个请求ping Drupal站点
  • 当用户从Drupal注销时,Drupal直接向node.js服务器发出请求,要求其删除该用户的令牌

  • 听起来基本上是将java应用程序替换为node.js。这应该是可行的,其优点是,如果将来将其拆分为多个服务器,它可以很好地扩展。

    看看您正在做的事情,并试图让事情尽可能简单,我会选择第一个选项的变体。这基本上就是当前模块所做的,尽管它使用唯一的授权令牌。工作流程如下所示:

  • 当登录用户加载页面时,将生成一个唯一的令牌并存储在Drupal数据库中,然后发送到浏览器
  • 当浏览器连接到node.js服务器时,它会将auth令牌与请求一起发送
  • node.js服务器在第一次收到带有令牌的请求时,将连接到Drupal站点上的web服务,并验证令牌是否有效,并发回有关用户的任何信息,以及他们有哪些角色等
  • 然后node.js服务器将其存储在内部以备将来的请求,这样就不必为每个请求ping Drupal站点
  • 当用户从Drupal注销时,Drupal直接向node.js服务器发出请求,要求其删除该用户的令牌

  • 听起来基本上是将java应用程序替换为node.js。这应该是可行的,其优点是,如果将来将其拆分为多个服务器,它可以很好地扩展。

    这是有道理的。是否可以使用存储在标头或cookie中的会话变量作为唯一令牌,以消除对额外令牌的需要?这是有道理的。是否可以使用存储在标头或cookie中的会话变量作为唯一令牌,以消除对额外令牌的需要?