1

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)

およびデータソースの作成方法:

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

ここで、その JAASAuthData を「コンテナー管理の認証エイリアス」として DataSource にバインドする必要があります。残念ながら、既存の DataSource の属性やそのタスクの例を調べても、API で何も見つかりません。そのようなバインディングを作成する方法は?

4

2 に答える 2

0

コンテナー管理の認証エイリアスを構成する推奨される方法は、アプリケーションのデプロイ時にリソース参照に設定することです。

DataSource レベルで構成することは引き続き許可されます (非推奨ですが)。

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

ところで: WDR ライブラリhttp://wdr.github.io/WDR/を使用すると、スクリプトの保守性が向上します(私は主な貢献者の 1 人です)。

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()

上記のスクリプトは、失敗やオブジェクトの重複なしに安全に再実行できます。

于 2013-09-30T21:07:20.453 に答える