使用Env变量的Spring Cloud数据流的自定义范围

问题描述 投票:0回答:1

我正在尝试在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,其中将map-oauth-scopes设置为true,然后应将所有7个Spring Cloud Data Flow角色映射到作用域。

我注意到您可以使用env对象下的manifest.yml配置上述属性,并对键进行一些修改。如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个回答
0
投票

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

在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"
               }
            }
        }

显然,对于所有角色,作用域可以相同,也可以因角色而异,这取决于业务逻辑。仅确保您使用具有范围的用户登录。

© www.soinside.com 2019 - 2024. All rights reserved.