Пользовательские области для потока данных Spring Cloud с использованием переменных Env - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь развернуть 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 должны быть сопоставлены с областями действия.

Я заметил, что вы можете настроить указанные свойства, используя 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?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2019

Хорошо, поэтому не уверен, что именно так вы и предполагаете, однако он работает и легко настраивается.

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

Очевидно, что области действия могут быть одинаковыми для всех ролей или различаться по ролям - ваш выбор зависит от бизнес-логики. Убедитесь, что вы входите в систему только с тем пользователем, у которого есть области действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...