openfire整合現(xiàn)有系統(tǒng)用戶

鏈接:http://blog.csdn.net/unicorn_520/article/details/7700018

openfire服務(wù)器配置,先跳過介紹,我想在文章里用到的時(shí)候再插入一些介紹肮雨。

openfire擴(kuò)展小試 整合現(xiàn)有系統(tǒng)用戶

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

注意:在集成成功后屠尊,使用的用戶就是你集成系統(tǒng)的數(shù)據(jù)庫旷祸,而不是你原來在openfire里配置的數(shù)據(jù)庫了,原來的openfire數(shù)據(jù)庫依然有用讼昆,只是用戶表ofuser不不能用了托享,因?yàn)槿绻苡茫敲从脩糍~號就可能重復(fù)浸赫,因?yàn)椴荒軆商子脩舯怼?/b>

進(jìn)入openfire管理控制臺-服務(wù)器-服務(wù)管理器-系統(tǒng)屬性

可以發(fā)現(xiàn)如下配置

provider.auth.className

org.jivesoftware.openfire.auth.DefaultAuthProvider

*用戶驗(yàn)證

provider.group.className

org.jivesoftware.openfire.group.DefaultGroupProvider

*獲取組相關(guān)數(shù)據(jù)

provider.user.className

org.jivesoftware.openfire.user.DefaultUserProvider

*獲取用戶相關(guān)數(shù)據(jù)

這些Provider是openfire默認(rèn)自己管理用戶組

但同時(shí)openfire還提供了支持JDBC相關(guān)的Provider闰围,可以從其它的數(shù)據(jù)源獲取用戶/組數(shù)據(jù)

將上面三個(gè)屬性分別修改為

org.jivesoftware.openfire.auth.JDBCAuthProvider

org.jivesoftware.openfire.group.JDBCGroupProvider

org.jivesoftware.openfire.user.JDBCUserProvider

然后,需要配置一下數(shù)據(jù)源既峡,添加如下屬性

jdbcProvider.driver

*數(shù)據(jù)源驅(qū)動

jdbcProvider.connectionString

*連接字符串

對每一個(gè)JDBC Provider需要配置相關(guān)的SQL語句和屬性(在系統(tǒng)屬性里添加項(xiàng)目)

JDBCAuthProvider

jdbcAuthProvider.passwordSQL

*獲取用戶密碼的SQL

*輸入?yún)?shù):登錄名

*輸入列:密碼

*例:SELECT pwd FROM user WHERE name=?

jdbcAuthProvider.passwordType

*密碼類型可以是:plain(文本),md5,sha1

*如果你的密碼加密不為以上三種 就需要自己提供一個(gè)AuthProvider羡榴,在下一章會專門介紹

JDBCGroupProvider

jdbcGroupProvider.allGroupsSQL

*獲取所有組的SQL

*輸入?yún)?shù):無

*輸出列:組的KEY

*例:SELECT sn FROM department

jdbcGroupProvider.descriptionSQL

*獲取組的名稱(描述)

*輸入?yún)?shù):組記錄的KEY

*輸出列:組的名稱(描述)

*例:SELECT name FROM department where sn=?

jdbcGroupProvider.groupCountSQL

*獲取組的數(shù)量

*輸入?yún)?shù):組的KEY

*輸出列:組的數(shù)量

*例:SELECT count(sn) FROM department

jdbcGroupProvider.loadAdminsSQL

*獲取組的管理員

*輸入?yún)?shù):組記錄的KEY

*輸出列:組管理員的KEY

*例:SELECT admin FROM department where sn=?

jdbcGroupProvider.loadMembersSQL

*獲取組的成員

*輸入?yún)?shù):組的KEY

*輸出列:組成員的KEY(集合)

*例:SELECT usersn FROM department_user where departmentsn=?

jdbcGroupProvider.userGroupsSQL

*獲取成員的組

*輸入?yún)?shù):成員的KEY

*輸出列:成員所性組的KEY

*例:SELECT departmentsn FROM department_user where usersn=?

JDBCUserProvider

jdbcUserProvider.allUsersSQL

*獲取所有用戶

*輸入?yún)?shù):無

*輸出列:用戶的KEY

*例:SELECT sn from user

jdbcUserProvider.userCountSQL

*獲取所有用戶數(shù)量

*輸入?yún)?shù):無

*輸出列:用戶數(shù)量

*例:SELECT count(sn) from user

jdbcUserProvider.loadUserSQL

*獲取用戶信息

*輸入?yún)?shù):用戶的KEY

*輸出列:登錄名,名稱,email(至少應(yīng)該這三列运敢,下面要用到)

*例:SELECT loginname,name,email from user where sn =?

jdbcUserProvider.emailField

*指定用戶email的列名如:email

jdbcUserProvider.nameField

*指定用戶名稱的列名如:name

jdbcUserProvider.usernameField

*指定用戶登錄名的列名如:loginname

最后 還需要配置新的管理員用戶

admin.authorizedJIDs

*指定新數(shù)據(jù)源中的管理員用戶注意是是完整JID(user@域名)

*例:admin@server.cn

配置好如上屬性 重啟openfire

使用admin.authorizedJIDs中的用戶名登錄openfire管理控制臺

如果配置成功校仑,進(jìn)入openfire管理控制臺-用戶/組

就可以看到你數(shù)據(jù)源中的用戶/組信息了

同時(shí)可以使用spark登錄進(jìn)行測試

此外,如果在調(diào)試過程中出現(xiàn)問題 無法登錄openfire管理控制臺

(這里需要注注意的是在屬性amdin.authorizedJIDs的值如設(shè)置成者冤,那么這里的abc就是openfire后臺管理的管理員名肤视,并且這個(gè)管理員的信息不是在我們原來的openfire指定的數(shù)據(jù)庫里的管理員,而是在待集成系統(tǒng)的的數(shù)據(jù)庫那里名為abc的管理員涉枫,當(dāng)然我們也可以配置SQL來指定管理員從待集成信息的那個(gè)表時(shí)獲取出來邢滑。)

可以直接修改openfire數(shù)據(jù)庫中的 OFPROPERTY表

經(jīng)測試,可以集成現(xiàn)有系統(tǒng)愿汰,例子如下:

我的IP為 192.168.1.102 困后,使用的是mysql數(shù)據(jù)庫

現(xiàn)有系統(tǒng)庫為sns,其中有張user表衬廷,字段:id,email,password,name

為了集成摇予,首先:

修改ofproperty表,將修改之后的內(nèi)容如下(這里boy就是管理員的名字)

admin.authorizedJIDsboy@192.168.1.102

jdbcAuthProvider.passwordSQL????? ?select password from user where id=?

jdbcAuthProvider.passwordType????? plain //加密方式 還有其他的機(jī)密方式

"plain" (the password is stored as plain text)

"md5" (the password is stored as a hex-encoded MD5 hash)

"sha1" (the password is stored as a hex-encoded SHA-1 hash)

"sha256" (the password is stored as a hex-encoded SHA-256 hash)

"sha512" (the password is stored as a hex-encoded SHA-512 hash)

jdbcProvider.connectionString???? ?jdbc:mysql://localhost:3306/sns?user=root&password=123456

jdbcProvider.driver???????? ????? ?com.mysql.jdbc.Driver

jdbcUserProvider.allUsersSQL????? ?select id from user

jdbcUserProvider.emailField??????? email

jdbcUserProvider.loadUserSQL???????select name,email from user where id=?

jdbcUserProvider.nameField???????? name

jdbcUserProvider.userCountSQL????? select count(*) from user

jdbcUserProvider.usernameField???? name

passwordKey??????????????????????? f46L75p2QsuKCQy //加密串

provider.admin.className?????????? org.jivesoftware.openfire.admin.DefaultAdminProvider

provider.auth.className??????????? org.jivesoftware.openfire.auth.JDBCAuthProvider

provider.group.className?????????? org.jivesoftware.openfire.group.DefaultGroupProvider

provider.lockout.className???????? org.jivesoftware.openfire.lockout.DefaultLockOutProvider

provider.securityAudit.className?? org.jivesoftware.openfire.security.DefaultSecurityAuditProvider

provider.user.className?????????? ?org.jivesoftware.openfire.user.JDBCUserProvider

provider.vcard.className?????????? org.jivesoftware.openfire.vcard.DefaultVCardProvider

update.lastCheck?????????????????? 1262616901497

xmpp.auth.anonymous??????????????? true

xmpp.domain??????????????????????? 192.168.1.102

xmpp.session.conflict-limit??????? 0

xmpp.socket.ssl.active???????????? true

注:紅色為修改的內(nèi)容

重啟openfire服務(wù)器即可.

以后登陸需要輸入id,password.有人會問了吗跋,為什么用id而不用email呢侧戴?

這是因?yàn)閑mail中帶有符號,而在openfire中會用于記錄服務(wù)器的域名跌宛。所以會有沖突酗宋。

況且,openfire作為IM集成到現(xiàn)有系統(tǒng)中時(shí)疆拘,走的登陸是隱式登陸蜕猫,即嵌入到原有系統(tǒng)的登陸方式中。

對用戶而言透明哎迄。

問題:

但是回右,需要解決的問題在客戶端顯示時(shí)隆圆,現(xiàn)有spark是顯示的id,jwchat估計(jì)也是翔烁,需要修改一下渺氧,使其對用戶而言只顯示用戶名!如果能夠解決租漂,那么對于現(xiàn)有系統(tǒng)而言阶女,基本無任何改動。

現(xiàn)有系統(tǒng)庫為myim哩治,其中有張user表秃踩,字段:id,email,password,name,與上面不同的是id這里我設(shè)它不自動自增业筏,name

即作用戶顯示名也作賬號登陸使用(實(shí)際使用中要分開憔杨,這里只作個(gè)小測試),password為用戶登陸密碼蒜胖∠穑可以在openfire數(shù)據(jù)庫時(shí)執(zhí)行如下SQL語句來集成現(xiàn)有系統(tǒng)的用戶表:

Sql代碼

insert? into ofproperty(name,propValue)values

('jdbcProvider.driver','com.mysql.jdbc.Driver'),

('jdbcProvider.connectionString','jdbc:mysql://localhost/myim?

user=root&password=&useUnicode=true&characterEncoding=utf8'),

('admin.authorizedJIDs','admin@127.0.0.1'),

('jdbcAuthProvider.passwordSQL','SELECT password FROM user WHERE name=?'),

('jdbcAuthProvider.passwordType','plain'),

('jdbcUserProvider.loadUserSQL','SELECT name,email FROM user WHERE name=?'),

('jdbcUserProvider.userCountSQL','SELECT COUNT(*) FROM user'),

('jdbcUserProvider.allUsersSQL','SELECT name FROM user'),

('jdbcUserProvider.usernameField','name'),

('jdbcUserProvider.nameField','name'),

('jdbcUserProvider.emailField','email');

UPDATE ofProperty SET propValue='org.jivesoftware.openfire.user.JDBCUserProvider' WHERE

name='provider.user.className';

UPDATE ofProperty SET propValue='org.jivesoftware.openfire.auth.JDBCAuthProvider' WHERE

name='provider.auth.className';

在of的自帶的documentation/db-integration-guide.html 可以查看英文版的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市台谢,隨后出現(xiàn)的幾起案子寻狂,更是在濱河造成了極大的恐慌,老刑警劉巖朋沮,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇券,死亡現(xiàn)場離奇詭異,居然都是意外死亡樊拓,警方通過查閱死者的電腦和手機(jī)纠亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筋夏,“玉大人蒂胞,你說我怎么就攤上這事√跖瘢” “怎么了骗随?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赴叹。 經(jīng)常有香客問我鸿染,道長,這世上最難降的妖魔是什么稚瘾? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮姚炕,結(jié)果婚禮上摊欠,老公的妹妹穿的比我還像新娘丢烘。我一直安慰自己,他們只是感情好些椒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布播瞳。 她就那樣靜靜地躺著,像睡著了一般免糕。 火紅的嫁衣襯著肌膚如雪赢乓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天石窑,我揣著相機(jī)與錄音牌芋,去河邊找鬼。 笑死松逊,一個(gè)胖子當(dāng)著我的面吹牛躺屁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播经宏,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼犀暑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烁兰?” 一聲冷哼從身側(cè)響起耐亏,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沪斟,沒想到半個(gè)月后广辰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡币喧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年轨域,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杀餐。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡干发,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出史翘,到底是詐尸還是另有隱情枉长,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布琼讽,位于F島的核電站必峰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钻蹬。R本人自食惡果不足惜吼蚁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肝匆,春花似錦粒蜈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至能曾,卻和暖如春度硝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寿冕。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工蕊程, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚂斤。 一個(gè)月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓存捺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親曙蒸。 傳聞我的和親對象是個(gè)殘疾皇子捌治,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)纽窟,斷路器肖油,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 姓名:于川皓 學(xué)號:16140210089 轉(zhuǎn)載自:https://baike.baidu.com/item/sq...
    道無涯_cc76閱讀 1,934評論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法森枪,類相關(guān)的語法,內(nèi)部類的語法审孽,繼承相關(guān)的語法县袱,異常的語法,線程的語...
    子非魚_t_閱讀 31,597評論 18 399
  • 這是個(gè)落后和貧窮的國家佑力。 我們所擁有的幸運(yùn)式散,我希望那里的人也應(yīng)該擁有。 走出機(jī)場打颤,外面的一片光景似乎不是一個(gè)首都應(yīng)...
    大梨子_1034閱讀 166評論 0 0
  • 今天早上上班编饺,路過常走的美食小巷乖篷。看到個(gè)婆婆透且,提了滿滿三大包的金銀元寶撕蔼。這才意識到,原來今天是中元節(jié)了呀。 道教的...
    也望春山閱讀 120評論 0 0