2015-03-13 5 views
0

Я использую приведенный ниже сценарий для получения свойств источника данных.Извлечь JAASAuthData для источника данных

try: 
    for server in AdminConfig.list('Server').splitlines(): 
     serverName = AdminConfig.showAttribute(server, 'name') 
     serverType = AdminConfig.showAttribute(server, 'serverType') 
     findIndex = serverName.find('myservers') 
     if findIndex > 0 and serverType == 'APPLICATION_SERVER': 
      dsList = AdminConfig.list('DataSource', server).splitlines() 
      for ds in dsList: 
       # Get the database details for this data source 
       dbName = AdminConfig.showAttribute(ds, 'jndiName') 
       try: propSet = AdminConfig.showAttribute(ds, 'propertySet') 
       except: 
        print 'Error getting propertySet:' 
       else: 
        propList = AdminConfig.list('J2EEResourceProperty', propSet).splitlines() 
        for prop in propList: 
         print AdminConfig.showAttribute(prop, 'name') + '-' + AdminConfig.showAttribute(prop, 'value') 
       # Get the jaas authentication details for this data source 
       try: jaasAuthDataSet = AdminConfig.list("JAASAuthData", ds).splitlines() 
       except: 
        print 'Error getting Jaas Authentication data' 
       else: 
        for jaasAuthData in jaasAuthDataSet: 
         print AdminConfig.showAttribute(jaasAuthData, "alias") 
except AdminException, ex: 
    print 'Admin Config not available:' + ex 
return None 

Однако в наборе свойств DataSource я не в состоянии получить authdatalias свойство, которое определяет компонент управляемого authdata псевдоним.

Также я пытался получить JAASAuthData для Datasource, используя ниже, но без каких-либо результатов:

AdminConfig.list("JAASAuthData", ds).splitlines() 

Я могу получить список всех JAASAuthData с помощью ниже:

for jsData in AdminConfig.list("JAASAuthData").splitlines(): 
    print AdminConfig.showAttribute(jsData, "alias") + "-" + AdminConfig.showAttribute(jsData, "userId") 

Любые указатели на то, как это можно извлечь, будут полезны. Благодарю.

ответ

1

У меня есть решение для вашей проблемы, но это функция, которую я создал, и она работает для меня. Мой скрипт ищет в security.xml и расшифровывать пароли.

def search (alias, file): 
    list = [] 
    list.append(alias) 
    f=open(file) 
    lines=f.readlines() 
    for line in lines: 
     poz = line.find('/'+alias) 
     if poz > 0: 
      Line = line 
      break 

    user = Line[Line.find('userId=')+8:Line.find('\" password')] 
    list.append(user) 
    password = Line[Line.find('password=')+15:Line.find('\" description')] 

    password = decrypt(password) 
    list.append(password) 
    description = Line[Line.find('description=')+13:Line.find('\"/>')] 
    list.append(description) 
    authAliasList.append(list) 

def decrypt (word): 
    if not len(word) > 1: exit() 
    word = word.replace(':', '') 
    value1 = binascii.a2b_base64(word) 
    value2 = '_' * len(value1) 
    out = '' 
    for a, b in zip(value1, value2): 
     out = ''.join([out, chr(ord(a)^ord(b))]) 
    return out 

#=============================================== 
#MAIN 
#=============================================== 

#AuthAlias is the Authentication Alias from Websphere. 
#secureFile is the path for you security.xml file 
search (AuthAlias, secureFile) 

Вы получите имя Authentication Alias, со следующими функциями:

dbConnList = AdminConfig.list('DataSource', scopeID).split(lineSeparator) 
if (len(dbConnList) > 0) : 
    for dbConn in dbConnList: 
     AuthAlias= AdminConfig.showAttribute(dbConn, "authDataAlias") 

Сценарий Creats список ваших AuthAlias ​​свойств.

authAliasList=[name of AuthAlias, user, password, description] 

Если у вас есть какие-либо проблемы, пожалуйста, дайте мне знать. Я сделал некоторые изменения в коде для использования в вашей области, и у меня не было времени проверить его. Поэтому я жду ваших вопросов.

+0

Спасибо .. но я думаю, что большая часть кода, который вы отправили здесь, не требуется. Хотя вы правильно указали мне, как получить 'authDataAlias' из' datasource'. Я искал атрибут на уровне 'J2EEResourceProperty', вместо этого он должен располагаться на уровне атрибута' datasource'. –