使用 WLST 管理 Weblogic 角色时如何处理组名中的空格?

How to deal with spaces in group names when managing Weblogic roles with WLST?

我需要使用 WLST 调整 weblogic 12 中的一些角色分配。在这种情况下,我想为一个组的所有成员分配一个角色。

这是一个非常有用的 python 脚本,前提是所述组名称不包含 spaces(我知道,我知道 ...)

connect('XXXXXXXXXX', 'XXXXXXXXXXXXX', 't3://XXXXXXXX:XXXXXX')

cd ('SecurityConfiguration/weblogic/Realms/DecalogRealm/RoleMappers/DefaultRoleMapper')

print 'Setting condition for role "%s"...' % 'ComplianceSourceReader' ,
cmo.setRoleExpression(None,'ComplianceSourceReader',"Grp('ASSET MANAGER')")
print 'Done'

print "post edit report :"
print "=================="
print 'Role condition for "ComplianceSourceReader" role = %s' % (cmo.getRoleExpression(None,'ComplianceSourceReader'))
print
print "Done."

我尝试了几种常见的方法来转义策略表达式的组名中的 space 字符,但到目前为止都没有成功。我总是得到同样的错误

Caused by: weblogic.entitlement.data.EnCreateException: Missing ',' delimiter. for 'Grp("ASSET MANAGER")' at position:11
        at weblogic.entitlement.engine.EEngine.setRoleEntitlements(EEngine.java:1150)
        at weblogic.security.providers.authorization.DefaultRoleMapperImpl.setRoleExpression(DefaultRoleMapperImpl.java:328)
        ... 53 more

有没有办法解决这个问题,或者我们是否必须更改这些组名称?

您可以使用 weblogic.entitlement.parser.Parser class 进行检查。 WLST shell:

wls:/offline> from weblogic.entitlement.parser import Parser
wls:/offline> groups = ['ASSET MANAGER']
wls:/offline> print Parser.groups2Expr(groups)
{Grp(ASSET#KMANAGER)}