使用 Env 变量的 Spring 云数据流的自定义范围
Custom Scopes for Spring Cloud Data Flow using Env Variables
我正在尝试在 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 格式的 'translation' 需要下划线作为层次结构。
我错过了什么?如何使用 manifest.yml?
设置角色映射
提前致谢!
好的,所以不确定这是否是您想要的方式,但它可以工作并且易于设置。
在 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"
}
}
}
显然,所有角色的作用域可以相同,也可以因角色而异,具体取决于业务逻辑。
仅确保您使用具有范围的用户登录。
我正在尝试在 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 格式的 'translation' 需要下划线作为层次结构。
我错过了什么?如何使用 manifest.yml?
设置角色映射提前致谢!
好的,所以不确定这是否是您想要的方式,但它可以工作并且易于设置。
在 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"
}
}
}
显然,所有角色的作用域可以相同,也可以因角色而异,具体取决于业务逻辑。 仅确保您使用具有范围的用户登录。