【问题标题】:Custom Scopes for Spring Cloud Data Flow using Env Variables使用环境变量的 Spring Cloud 数据流的自定义范围
【发布时间】:2019-10-06 15:26:05
【问题描述】:

我正在尝试在 Cloud Foundry 上部署 spring-cloud-data-flow-server,并使用角色映射将默认角色映射到我自己的范围。

为了做到这一点,我关注https://docs.spring.io/spring-cloud-dataflow/docs/2.3.0.BUILD-SNAPSHOT/reference/htmlsingle/#configuration-security-role-mapping,其中指出 ma​​p-oauth-scopes 将设置为 true,然后所有 7 个 Spring Cloud Data流角色应映射到范围。

我注意到您可以使用 manifest.yml 配置上述属性,在 env 对象下,对键进行一些修改。如https://github.com/spring-cloud/spring-cloud-dataflow/blob/master/spring-cloud-dataflow-docs/src/main/asciidoc/configuration-cloudfoundry.adoc 中所述,此层次结构:

spring:
  cloud:
    dataflow:
      security:
        authorization:
          map-oauth-scopes: true                                    
          role-mappings:
            ROLE_CREATE: dataflow.create                            
            ROLE_DEPLOY: dataflow.deploy
            ROLE_DESTROY: dataflow.destoy
            ROLE_MANAGE: dataflow.manage
            ROLE_MODIFY: dataflow.modify
            ROLE_SCHEDULE: dataflow.schedule
            ROLE_VIEW: dataflow.view

在 manifest.yml 中可以这样表示:

- env:
  SPRING_CLOUD_DATAFLOW_SECURITY_AUTHORIZATION_MAP-OAUTH-SCOPES: true
  SPRING_CLOUD_DATAFLOW_SECURITY_AUTHORIZATION_ROLE-MAPPINGS_ROLE_CREATE: <my-scope>
  ...

map-oauth-scopes 已正确设置,但角色映射未正确设置。我怀疑这与角色前缀中的下划线有关(例如 ROLE_CREATE),因为“翻译”到 env 格式需要下划线作为层次结构。

我错过了什么?如何使用 manifest.yml 设置角色映射?

提前致谢!

【问题讨论】:

    标签: yaml spring-security-oauth2 spring-cloud-dataflow scopes


    【解决方案1】:

    好的,所以不确定您是否应该这样做,但是它可以工作并且易于设置。

    在 manifest.yml 中,添加一个 SPRING_APPLICATION_JSON 条目并将映射作为 json 传递。

    applications:
    - env:
       ...
        SPRING_PROFILES_DEFAULT: cloud
        SPRING_APPLICATION_JSON: |-
            {
               "spring.cloud.dataflow.security.authorization": {
                   "map-oauth-scopes": true,                                  
                   "role-mappings": {
                      "ROLE_CREATE": "my.scope.for.create",                        
                      "ROLE_DEPLOY": "my.scope.for.deploy",
                      "ROLE_DESTROY": "my.scope.for.destroy",
                      "ROLE_MANAGE": "my.scope.for.manage",
                      "ROLE_MODIFY": "my.scope.for.modify",
                      "ROLE_SCHEDULE": "my.scope.for.schedule",
                      "ROLE_VIEW": "my.scope.for.view"
                   }
                }
            }
    

    显然,所有角色的范围可以相同,也可以因角色而异,您可以根据业务逻辑进行选择。 仅确保您使用具有范围的用户登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-08
      • 2017-07-03
      • 2018-11-27
      • 2021-05-12
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多