轉:openfire 整合現有數據庫


關鍵字: xmpp openfire spark 用戶 組 jdbcauthprovider openfire服務器配置,先跳過介紹,我想在文章裏用到的時候再插入一些介紹。

openfire擴展小試 整合現有系統用戶

如果我想使用現有系統的用戶/組(部門),而不想使用openfire再去管理一套用戶/組,用openfire可以非常方便的整合現有系統用戶。

進入openfire管理控制檯-服務器-服務管理器-系統屬性
可以發現如下配置
provider.auth.className
org.jivesoftware.openfire.auth.DefaultAuthProvider
*用戶驗證
provider.group.className
org.jivesoftware.openfire.group.DefaultGroupProvider
*獲取組相關數據
provider.user.className
org.jivesoftware.openfire.user.DefaultUserProvider
*獲取用戶相關數據
這些Provider是openfire默認自己管理用戶組

但同時openfire還提供了支持JDBC相關的Provider,可以從其它的數據源獲取用戶/組數據
將上面三個屬性分別修改爲
org.jivesoftware.openfire.auth.JDBCAuthProvider
org.jivesoftware.openfire.group.JDBCGroupProvider
org.jivesoftware.openfire.user.JDBCUserProvider

然後,需要配置一下數據源,添加如下屬性
jdbcProvider.driver
*數據源驅動
jdbcProvider.connectionString
*連接字符串

對每一個JDBC Provider需要配置相關的SQL語句和屬性(在系統屬性裏添加項目)

JDBCAuthProvider
jdbcAuthProvider.passwordSQL
*獲取用戶密碼的SQL
*輸入參數:登錄名
*輸入列:密碼
*例:SELECT pwd FROM user WHERE name=?
jdbcAuthProvider.passwordType
*密碼類型可以是:plain(文本),md5,sha1
*如果你的密碼加密不爲以上三種 就需要自己提供一個AuthProvider,在下一章會專門介紹


JDBCGroupProvider
jdbcGroupProvider.allGroupsSQL
*獲取所有組的SQL
*輸入參數:無
*輸出列:組的KEY
*例:SELECT sn FROM department

jdbcGroupProvider.descriptionSQL
*獲取組的名稱(描述)
*輸入參數:組記錄的KEY
*輸出列:組的名稱(描述)
*例:SELECT name FROM department where sn=?

jdbcGroupProvider.groupCountSQL
*獲取組的數量
*輸入參數:組的KEY
*輸出列:組的數量
*例:SELECT count(sn) FROM department

jdbcGroupProvider.loadAdminsSQL
*獲取組的管理員
*輸入參數:組記錄的KEY
*輸出列:組管理員的KEY
*例:SELECT admin FROM department where sn=?

jdbcGroupProvider.loadMembersSQL
*獲取組的成員
*輸入參數:組的KEY
*輸出列:組成員的KEY(集合)
*例:SELECT usersn FROM department_user where departmentsn=?

jdbcGroupProvider.userGroupsSQL
*獲取成員的組
*輸入參數:成員的KEY
*輸出列:成員所性組的KEY
*例:SELECT departmentsn FROM department_user where usersn=?



JDBCUserProvider
jdbcUserProvider.allUsersSQL
*獲取所有用戶
*輸入參數:無
*輸出列:用戶的KEY
*例:SELECT sn from user

jdbcUserProvider.userCountSQL
*獲取所有用戶數量
*輸入參數:無
*輸出列:用戶數量
*例:SELECT count(sn) from user

jdbcUserProvider.loadUserSQL
*獲取用戶信息
*輸入參數:用戶的KEY
*輸出列:登錄名,名稱,email(至少應該這三列,下面要用到)
*例:SELECT loginname,name,email from user where sn =?

jdbcUserProvider.emailField
*指定用戶email的列名如:email
jdbcUserProvider.nameField
*指定用戶名稱的列名如:name
jdbcUserProvider.usernameField
*指定用戶登錄名的列名如:loginname


最後 還需要配置新的管理員用戶
admin.authorizedJIDs
*指定新數據源中的管理員用戶注意是是完整JID(user@域名)
*例:[email protected]

配置好如上屬性 重啓openfire
使用admin.authorizedJIDs中的用戶名登錄openfire管理控制檯
如果配置成功,進入openfire管理控制檯-用戶/組
就可以看到你數據源中的用戶/組信息了
同時可以使用spark登錄進行測試


此外,如果在調試過程中出現問題 無法登錄openfire管理控制檯
可以直接修改openfire數據庫中的 OFPROPERTY表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章