这是我的骆驼上下文和SecurityConstraintMapping豆
<bean id="constraint"
class="org.apache.camel.component.netty4.http.SecurityConstraintMapping">
<property name="inclusions">
<map>
<entry key="/dev/*" value="developer,scrumMaster" />
<entry key="/test/*" value="tester,scrumMaster" />
<entry key="/scrum/*" value="scrumMaster" />
</map>
</property>
<property name="exclusions">
<set>
<value>/public/*</value>
</set>
</property>
</bean>
<camelContext id="camelCtx"
xmlns="http://camel.apache.org/schema/blueprint">
<routeBuilder ref="routeBuilder" />
<route>
<from
uri="netty4-http:http://0.0.0.0:{{port}}/dev/ping?matchOnUriPrefix=true&securityConfiguration.realm=karaf&securityConfiguration.securityConstraint=#constraint" />
<transform>
<constant>This is ping URL for developer</constant>
</transform>
</route>
<route>
<from
uri="netty4-http:http://0.0.0.0:{{port}}/test?matchOnUriPrefix=true&securityConfiguration.realm=karaf&securityConfiguration.securityConstraint=#constraint" />
<transform>
<constant>Hello Tester</constant>
</transform>
</route>
<route>
<from
uri="netty4-http:http://0.0.0.0:{{port}}/scrum?matchOnUriPrefix=true&securityConfiguration.realm=karaf&securityConfiguration.securityConstraint=#constraint" />
<transform>
<constant>Hello Tester</constant>
</transform>
</route>
</camelContext>
具有角色“ developer,srumMaster”的用户应该可以访问路径/ dev
具有角色“ tester,srumMaster”的用户可以访问路径/ test shuold
只有角色为“ srumMaster”的用户才能访问路径/ scrum shuold
karaf容器上的用户角色映射如下
karaf @ run()> jaas:user-list
用户名|集团|角色
---------- + ------------------- + -------------- >
卡拉夫| admingroup |管理员
卡拉夫| admingroup |经理
卡拉夫| admingroup |查看者
卡拉夫| admingroup |系统捆绑
dev1 |发展集团|开发人员
test1 | testGroup |测试员
scrum1 | scrumMasterGroup | scrumMaster
scrum1 | scrumMasterGroup |开发人员
scrum1 | scrumMasterGroup |测试员
答案 0 :(得分:0)
该默认约束不受支持,因为它没有与Karaf使用的JAAS集成。因此,您需要构建自己的支持JAAS的角色来获取用户角色,然后匹配这些URI模式。