检索数据源的JAASAuthData

时间:2015-03-13 09:54:15

标签: java websphere jaas wsadmin

我使用以下脚本来检索数据源属性。

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的{​​{1}},但没有任何结果:

Datasource

我可以使用以下内容检索所有AdminConfig.list("JAASAuthData", ds).splitlines() 的列表:

JAASAuthData

有关如何检索此内容的任何指示都会有所帮助。感谢。

1 个答案:

答案 0 :(得分: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 )

您将获得具有下一个功能的身份验证别名的名称:

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

该脚本会创建一个AuthAlias属性列表。

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

如果您有任何问题,请告诉我。我在代码中做了一些修改,以便在您的范围内使用,我没有时间对其进行测试。所以我在等你的问题。