使用jython脚本将容器管理的认证别名与DataSource绑定

时间:2013-09-30 14:14:16

标签: websphere jython wsadmin

我正在使用WebSphere 8.5

我已经找到了如何使用jython脚本使用用户名和密码创建JAASAuthData:

objServerAttrs = AdminControl.completeObjectName('WebSphere:type = Server,*')

cellName = AdminControl.getAttribute(objServerAttrs, 'cellName')
sec = AdminConfig.getid('/Cell:%s/Security:/' % cellName)
jaasAttr = [['alias', jaasAlias],['userId', jaasUser],['password', jaasPass]]
jaasAuthData = AdminConfig.create('JAASAuthData', sec, jaasAttr)

以及如何创建dataSource:

dsAttrs = [['name', 'myDS1'], ['jndiName','jdbc/MY/DS1']]    
newDs = AdminConfig.create('DataSource', provider, dsAttrs) 

现在我需要将JAASAuthData与我的DataSource绑定为“容器管理的身份验证别名”,不幸的是我在API中找不到任何内容,检查现有DataSource的属性或该任务的任何示例。如何创建这样的绑定?

2 个答案:

答案 0 :(得分:0)

您需要指定authDataAlias属性:

dsAttrs = [['name', 'myDS1'], ['jndiName','jdbc/MY/DS1'], ['authDataAlias',jaasAlias]]    
newDs = AdminConfig.create('DataSource', provider, dsAttrs) 

答案 1 :(得分:0)

配置容器管理的身份验证别名的推荐方法是在应用程序部署期间将其设置在资源引用上。

仍允许(尽管已弃用)在DataSource级别配置它:

newDs = AdminConfig.create('DataSource', provider, dsAttrs)
mapping = AdminConfig.showAttribute(newDs, 'mapping')
AdminConfig.modify(mapping, [['mappingConfigAlias', jaasAlias], ['authDataAlias', jaasAlias]])

BTW:如果您使用WDR库http://wdr.github.io/WDR/(我是其中一个主要贡献者),您的脚本将更易于维护。

jaasAlias = 'TheAuthAliasName'
provider = getid1('/JDBCProvider:TheProviderName/')
security = getid1('/Cell:/Security:/')
security.assure('JAASAuthData', {'alias':jaasAlias}, userId = 'user', password = 'password')
ds = provider.assure('DataSource', {'name':'myDS1'}, jndiName = 'jdbc/MY/DS1')
# component-managed authentication:
ds.authDataAlias = jaasAlias
# ... and container-managed authentication:
ds.mapping.mappingConfigAlias = jaasAlias
ds.mapping.authDataAlias = jaasAlias
save()
sync()

可以安全地重新运行上述脚本,而不会出现故障或重复的对象。