用于Spring Cloud数据流的LDAP AuthN和AuthZ

时间:2018-03-02 22:20:38

标签: spring-security spring-cloud-dataflow

Cloudfoundry的SCDF服务器:1.2.4.RELEASE

配置LDAP身份验证的安全属性,我的身份验证部分正常工作,但授权有点奇怪。

SCDF的安全实施似乎正在寻找这样的一些角色: ROLE_CREATE, ROLE_MANAGE, ROLE_VIEW.

但对我来说,标准组名在AD中需要一些特定的命名约定,类似于以下内容:app_myapplication_authz_CREATE, app_myapplication_authz_MANAGE, and app_myapplication_authz_VIEW

当我通过SCDF身份验证输出进行调试时,我可以看到正确检索了经过身份验证的委托人的组成员身份。它们在DEBUG输出中显示为:ROLE_APP_MYAPPLICATION_AUTHZ_CREATE, ROLE_APP_MYAPPLICATION_AUTHZ_MANAGE, ROLE_APP_MYAPPLICATION_AUTHZ_VIEW

现在,我提供了一个如下所示的YML安全配置:

spring: 
  cloud: 
    dataflow: 
      security: 
        authorization: 
          enabled: true
          rules: 
          - GET /metrics/streams => hasRole('ROLE_APP_MYAPPLICATION_AUTHZ_VIEW')
          - POST /apps/** => hasRole('ROLE_APP_MYAPPLICATION_AUTHZ_CREATE')
          - etc, etc, etc

依此类推,适用于所有端点授权。

但是,我在成功进行身份验证后仍然收到消息,但我没有相应的角色,我需要与管理员联系。

我错误配置了什么,或者我在此设置中缺少什么?

更新

我从这里下载了春天云数据流ui的1.2.1.RELEASE版本的源代码:GitHub spring-cloud-dataflow-ui

并发现在所有.html视图文件中,角色名称都是ROLE_VIEW, ROLE_CREATE, ROLE_MANAGE的硬编码。因此,看起来我的配置将允许我根据我的LDAP组名自定义REST端点上的授权,但我将无法对实际的UI视图执行相同的操作。我想我在这里有一个选项,即构建/生成我自己的UI自定义版本,并将其与spring-cloud-dataflow-server JAR捆绑而不是使用OOTB ui。

我必须权衡我是否真的想这样做。

1 个答案:

答案 0 :(得分:0)

我们还没有直接映射LDAP AD组< - > SCDF角色。我们还没有来自社区或客户的任何人。但要求这种整合。到目前为止,UAA支持OAuth成为PCF的热门选择。

也就是说,我创建了spring-cloud/spring-cloud-dataflow#2084来跟踪对组映射的支持。实现它可能是微不足道的(YAML中的Group vs. ROLE映射和后端代码中的解析逻辑);我把它标记为1.5,但我们可能会在下周的1.4版本中尽快拿起它。

我建议不要直接调整UI代码。当地的叉子太多了,你必须维护它。