Связывание псевдонима управляемой аутентификации контейнера с DataSource с использованием сценария jython

Я использую WebSphere 8.5.

Я узнал, как создать JAASAuthData с именем пользователя и паролем, используя скрипт jython:

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 с моим источником данных как «псевдоним проверки подлинности, управляемый контейнером», к сожалению, я ничего не могу найти в API, проверяя атрибуты существующих источников данных или какой-либо пример для этой задачи. Как создать такую ​​привязку?


person Danubian Sailor    schedule 30.09.2013    source источник


Ответы (2)


Вам нужно указать атрибут authDataAlias:

dsAttrs = [['name', 'myDS1'], ['jndiName','jdbc/MY/DS1'], ['authDataAlias',jaasAlias]]    
newDs = AdminConfig.create('DataSource', provider, dsAttrs) 
person ᄂ ᄀ    schedule 30.09.2013
comment
Это устанавливает псевдоним проверки подлинности, управляемый компонентом, и мне нужно установить псевдоним проверки подлинности, управляемый контейнером. - person Danubian Sailor; 01.10.2013

Рекомендуемый способ настройки псевдонима проверки подлинности, управляемого контейнером, — установить его для ссылки на ресурс во время развертывания приложения.

По-прежнему разрешено (хотя и не рекомендуется) настраивать его на уровне 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/ (я один из главных участников).

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

Приведенный выше сценарий можно безопасно повторно запустить без сбоев или дублирования объектов.

person Marcin Płonka    schedule 30.09.2013