本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種單點(diǎn)登錄的方法及系統(tǒng)、一種認(rèn)證中心服務(wù)器。
背景技術(shù):
隨著科技的快速發(fā)展,同一個(gè)用戶可能在多個(gè)不同的應(yīng)用系統(tǒng)中都注冊(cè)有賬號(hào),同一個(gè)企業(yè)中也一般包括多個(gè)應(yīng)用系統(tǒng),通過單點(diǎn)登錄可以方便用戶登錄不同的應(yīng)用系統(tǒng)。
現(xiàn)有技術(shù)中,當(dāng)用戶通過門戶系統(tǒng)第一次登錄某個(gè)應(yīng)用系統(tǒng)時(shí),需要對(duì)該用戶進(jìn)行身份認(rèn)證,當(dāng)該用戶下次登錄時(shí),無需再進(jìn)行身份認(rèn)證,并且可以直接登錄到該門戶系統(tǒng)對(duì)應(yīng)的各個(gè)應(yīng)用系統(tǒng)中。舉例來說,門戶系統(tǒng)對(duì)應(yīng)應(yīng)用系統(tǒng)a和應(yīng)用系統(tǒng)b,用戶a第一次通過門戶系統(tǒng)登錄應(yīng)用系統(tǒng)a時(shí),需要對(duì)用戶a進(jìn)行身份認(rèn)證,通過身份認(rèn)證后才可以單點(diǎn)登錄應(yīng)用系統(tǒng)a,當(dāng)用戶a下次登錄時(shí),無需再進(jìn)行身份認(rèn)證,并且,用戶a也可以直接通過門戶系統(tǒng)單點(diǎn)登錄到應(yīng)用系統(tǒng)b中。
通過上述描述可見,現(xiàn)有技術(shù)中單點(diǎn)登錄的方案中,非法用戶能夠輕易利用合法用戶第一次登錄時(shí)的記錄訪問各個(gè)應(yīng)用系統(tǒng),安全性較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的方法及系統(tǒng)、一種認(rèn)證中心服務(wù)器,能夠提高單點(diǎn)登錄的安全性。
第一方面,本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的方法,應(yīng)用于認(rèn)證中心服務(wù)器,包括:
接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求;
獲取所述申請(qǐng)令牌的請(qǐng)求對(duì)應(yīng)的用戶的用戶信息;
根據(jù)所述申請(qǐng)令牌的請(qǐng)求,生成令牌;
保存所述令牌的認(rèn)證信息和所述用戶信息;
向所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)送所述令牌,以使所述發(fā)起登錄請(qǐng)求的系統(tǒng)向要登錄到的系統(tǒng)發(fā)送所述令牌;
接收所述要登錄到的系統(tǒng)發(fā)來的所述令牌;
根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述要登錄到的系統(tǒng)發(fā)來的所述令牌進(jìn)行驗(yàn)證,當(dāng)所述令牌通過驗(yàn)證時(shí),允許所述用戶登錄到所述要登錄到的系統(tǒng),向所述要登錄到的系統(tǒng)發(fā)送所述用戶信息,以使所述要登錄到的系統(tǒng)根據(jù)所述用戶信息創(chuàng)建所述用戶的用戶會(huì)話。
進(jìn)一步地,所述申請(qǐng)令牌的請(qǐng)求中包括:所述令牌對(duì)應(yīng)的所述要登錄到的系統(tǒng)的目標(biāo)地址;
在所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求之后,進(jìn)一步包括:
從所述申請(qǐng)令牌的請(qǐng)求中獲取所述目標(biāo)地址;
所述令牌的認(rèn)證信息包括:所述令牌的生成時(shí)間、所述目標(biāo)地址;
進(jìn)一步包括:預(yù)先設(shè)置令牌失效時(shí)間長(zhǎng)度;
所述根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述令牌進(jìn)行驗(yàn)證,包括:
判斷所述要登錄到的系統(tǒng)發(fā)來的所述令牌是否滿足:接收到所述要登錄到的系統(tǒng)發(fā)來的所述令牌的時(shí)間與所述令牌的生成時(shí)間的時(shí)間差不大于所述令牌失效時(shí)間長(zhǎng)度,且保存的所述目標(biāo)地址與發(fā)來所述令牌的系統(tǒng)的地址相同,如果是,則判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌通過驗(yàn)證,否則,判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌沒有通過驗(yàn)證。
進(jìn)一步地,在所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求之前,進(jìn)一步包括:
接收所述用戶輸入的用戶驗(yàn)證信息;
根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),執(zhí)行所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
進(jìn)一步地,該方法進(jìn)一步包括:當(dāng)所述令牌通過驗(yàn)證時(shí),銷毀所述令牌。
第二方面,本發(fā)明實(shí)施例提供了一種認(rèn)證中心服務(wù)器,包括:
第一接收單元,用于接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求;
第一獲取單元,用于獲取所述申請(qǐng)令牌的請(qǐng)求對(duì)應(yīng)的用戶的用戶信息;
生成單元,用于根據(jù)所述申請(qǐng)令牌的請(qǐng)求,生成令牌;
保存單元,用于保存所述令牌的認(rèn)證信息和所述用戶信息;
發(fā)送單元,用于向所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)送所述令牌,以使所述發(fā)起登錄請(qǐng)求的系統(tǒng)向要登錄到的系統(tǒng)發(fā)送所述令牌;
第二接收單元,用于接收所述要登錄到的系統(tǒng)發(fā)來的所述令牌;
驗(yàn)證單元,用于根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述要登錄到的系統(tǒng)發(fā)來的所述令牌進(jìn)行驗(yàn)證,當(dāng)所述令牌通過驗(yàn)證時(shí),允許所述用戶登錄到所述要登錄到的系統(tǒng),向所述要登錄到的系統(tǒng)發(fā)送所述用戶信息,以使所述要登錄到的系統(tǒng)根據(jù)所述用戶信息創(chuàng)建所述用戶的用戶會(huì)話。
進(jìn)一步地,所述申請(qǐng)令牌的請(qǐng)求中包括:所述令牌對(duì)應(yīng)的所述要登錄到的系統(tǒng)的目標(biāo)地址;
進(jìn)一步包括:第二獲取單元,用于從所述申請(qǐng)令牌的請(qǐng)求中獲取所述目標(biāo)地址;
所述令牌的認(rèn)證信息包括:所述令牌的生成時(shí)間、所述目標(biāo)地址;
進(jìn)一步包括:設(shè)置單元,用于設(shè)置令牌失效時(shí)間長(zhǎng)度;
所述驗(yàn)證單元,用于判斷所述要登錄到的系統(tǒng)發(fā)來的所述令牌是否滿足:接收到所述要登錄到的系統(tǒng)發(fā)來的所述令牌的時(shí)間與所述令牌的生成時(shí)間的時(shí)間差不大于所述令牌失效時(shí)間長(zhǎng)度,且保存的所述目標(biāo)地址與發(fā)來所述令牌的系統(tǒng)的地址相同,如果是,則判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌通過驗(yàn)證,否則,判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌沒有通過驗(yàn)證。
進(jìn)一步地,該認(rèn)證中心服務(wù)器進(jìn)一步包括:第三接收單元,用于接收所述用戶輸入的用戶驗(yàn)證信息;
身份驗(yàn)證單元,用于根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),觸發(fā)所述第一接收單元,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
進(jìn)一步地,所述驗(yàn)證單元,進(jìn)一步用于當(dāng)所述令牌通過驗(yàn)證時(shí),銷毀所述令牌。
第三方面,本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的系統(tǒng),包括:
如第二方面中任一所述的認(rèn)證中心服務(wù)器、至少一個(gè)設(shè)置有登錄請(qǐng)求攔截器的系統(tǒng);
所述至少一個(gè)設(shè)置有登錄請(qǐng)求攔截器的系統(tǒng)中包括:發(fā)起登錄請(qǐng)求的系統(tǒng)、要登錄到的系統(tǒng);
所述發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器,用于向所述認(rèn)證中心服務(wù)器發(fā)送申請(qǐng)令牌的請(qǐng)求,接收所述認(rèn)證中心服務(wù)器發(fā)來的令牌,將所述令牌發(fā)送給所述要登錄到的系統(tǒng);
所述要登錄到的系統(tǒng)中的登錄請(qǐng)求攔截器,用于攔截所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的所述令牌,向所述認(rèn)證中心服務(wù)器發(fā)送所述令牌,當(dāng)接收到所述認(rèn)證中心服務(wù)器發(fā)來的用戶信息時(shí),根據(jù)所述用戶信息創(chuàng)建用戶會(huì)話。
進(jìn)一步地,所述發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器,用于接收用戶發(fā)來的登錄所述要登錄到的系統(tǒng)的請(qǐng)求,判斷所述用戶是否已登錄所述認(rèn)證中心服務(wù)器,如果是,則執(zhí)行所述向所述認(rèn)證中心服務(wù)器發(fā)送申請(qǐng)令牌的請(qǐng)求,否則,將所述用戶重定向至所述認(rèn)證中心服務(wù)器的登錄界面,以使所述通過所述登錄界面輸入用戶驗(yàn)證信息;
所述認(rèn)證中心服務(wù)器,進(jìn)一步用于通過所述登錄界面接收所述用戶輸入的用戶驗(yàn)證信息;根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),執(zhí)行所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
在本發(fā)明實(shí)施例中,用戶需要登錄要登錄到的系統(tǒng)時(shí),發(fā)起登錄請(qǐng)求的系統(tǒng)需要獲取認(rèn)證中服務(wù)器發(fā)出令牌,將該令牌發(fā)送給要登錄到的系統(tǒng),要登錄到的系統(tǒng)將接收到的令牌發(fā)送給認(rèn)證中心服務(wù)器進(jìn)行驗(yàn)證,只有通過驗(yàn)證后,要登錄到的系統(tǒng)才會(huì)針對(duì)該用戶創(chuàng)建用戶會(huì)話,實(shí)現(xiàn)用戶登錄到要登錄到的系統(tǒng),如果用戶沒有令牌,或者令牌沒有通過驗(yàn)證,都無法登錄到要登錄到的系統(tǒng),提高了單點(diǎn)登錄的安全性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一實(shí)施例提供的一種單點(diǎn)登錄的方法的流程圖;
圖2是本發(fā)明一實(shí)施例提供的另一種單點(diǎn)登錄的方法的流程圖;
圖3是本發(fā)明一實(shí)施例提供的一種認(rèn)證中心服務(wù)器的示意圖;
圖4是本發(fā)明一實(shí)施例提供的另一種認(rèn)證中心服務(wù)器的示意圖;
圖5是本發(fā)明一實(shí)施例提供的一種單點(diǎn)登錄的系統(tǒng)的示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的方法,應(yīng)用于認(rèn)證中心服務(wù)器,該方法可以包括以下步驟:
步驟101:接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求;
步驟102:獲取所述申請(qǐng)令牌的請(qǐng)求對(duì)應(yīng)的用戶的用戶信息;
步驟103:根據(jù)所述申請(qǐng)令牌的請(qǐng)求,生成令牌;
步驟104:保存所述令牌的認(rèn)證信息和所述用戶信息;
步驟105:向所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)送所述令牌,以使所述發(fā)起登錄請(qǐng)求的系統(tǒng)向要登錄到的系統(tǒng)發(fā)送所述令牌;
步驟106:接收所述要登錄到的系統(tǒng)發(fā)來的所述令牌;
步驟107:根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述要登錄到的系統(tǒng)發(fā)來的所述令牌進(jìn)行驗(yàn)證,當(dāng)所述令牌通過驗(yàn)證時(shí),允許所述用戶登錄到所述要登錄到的系統(tǒng),向所述要登錄到的系統(tǒng)發(fā)送所述用戶信息,以使所述要登錄到的系統(tǒng)根據(jù)所述用戶信息創(chuàng)建所述用戶的用戶會(huì)話。
在本發(fā)明實(shí)施例中,用戶需要登錄要登錄到的系統(tǒng)時(shí),發(fā)起登錄請(qǐng)求的系統(tǒng)需要獲取認(rèn)證中服務(wù)器發(fā)出令牌,將該令牌發(fā)送給要登錄到的系統(tǒng),要登錄到的系統(tǒng)將接收到的令牌發(fā)送給認(rèn)證中心服務(wù)器進(jìn)行驗(yàn)證,只有通過驗(yàn)證后,要登錄到的系統(tǒng)才會(huì)針對(duì)該用戶創(chuàng)建用戶會(huì)話,實(shí)現(xiàn)用戶登錄到要登錄到的系統(tǒng),如果用戶沒有令牌,或者令牌沒有通過驗(yàn)證,都無法登錄到要登錄到的系統(tǒng),提高了單點(diǎn)登錄的安全性。
在本發(fā)明一實(shí)施例中,所述申請(qǐng)令牌的請(qǐng)求中包括:所述令牌對(duì)應(yīng)的所述要登錄到的系統(tǒng)的目標(biāo)地址;
在所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求之后,進(jìn)一步包括:
從所述申請(qǐng)令牌的請(qǐng)求中獲取所述目標(biāo)地址;
所述令牌的認(rèn)證信息包括:所述令牌的生成時(shí)間、所述目標(biāo)地址;
進(jìn)一步包括:預(yù)先設(shè)置令牌失效時(shí)間長(zhǎng)度;
所述根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述令牌進(jìn)行驗(yàn)證,包括:
判斷所述要登錄到的系統(tǒng)發(fā)來的所述令牌是否滿足:接收到所述要登錄到的系統(tǒng)發(fā)來的所述令牌的時(shí)間與所述令牌的生成時(shí)間的時(shí)間差不大于所述令牌失效時(shí)間長(zhǎng)度,且保存的所述目標(biāo)地址與發(fā)來所述令牌的系統(tǒng)的地址相同,如果是,則判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌通過驗(yàn)證,否則,判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌沒有通過驗(yàn)證。
在本發(fā)明實(shí)施例中,通過令牌失效時(shí)間長(zhǎng)度來限制令牌的有效期,避免令牌一直處于有效的狀態(tài),一旦這種令牌被非法用戶獲取,對(duì)單點(diǎn)登錄造成很大的安全威脅。通過目標(biāo)地址來限定令牌的使用范圍,使得每個(gè)令牌只能登錄對(duì)應(yīng)的要登錄到的系統(tǒng),避免同一個(gè)令牌可以登錄多個(gè)系統(tǒng),對(duì)單點(diǎn)登錄造成較大的安全威脅。其中,令牌失效時(shí)間長(zhǎng)度的取值范圍可以是[500毫秒,5秒]。例如:令牌失效時(shí)間長(zhǎng)度為1秒、2秒等。
在本發(fā)明一實(shí)施例中,在所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求之前,進(jìn)一步包括:
接收所述用戶輸入的用戶驗(yàn)證信息;
根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),執(zhí)行所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
在本發(fā)明實(shí)施例中,只有通過認(rèn)證中心服務(wù)器的身份驗(yàn)證的用戶才有資格獲取令牌。通過對(duì)身份驗(yàn)證和令牌驗(yàn)證使得單點(diǎn)登錄的安全性更高。
在本發(fā)明一實(shí)施例中,該方法進(jìn)一步包括:當(dāng)所述令牌通過驗(yàn)證時(shí),銷毀所述令牌。
在本發(fā)明實(shí)施例中,一個(gè)令牌只能使用一次,避免令牌被重復(fù)使用,可以降低令牌被非法獲取并使用的概率,提高了單點(diǎn)登錄的安全。
如圖2所示,本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的方法,該方法應(yīng)用于認(rèn)證中心服務(wù)器,在本發(fā)明實(shí)施例中,發(fā)起登錄請(qǐng)求的系統(tǒng)為系統(tǒng)a,要登錄到的系統(tǒng)為系統(tǒng)b。用戶需要從系統(tǒng)a單點(diǎn)登錄到系統(tǒng)b中。該方法可以包括以下步驟:
步驟201:預(yù)先設(shè)置令牌失效時(shí)間長(zhǎng)度。
步驟202:接收系統(tǒng)a發(fā)來的申請(qǐng)令牌的請(qǐng)求,該申請(qǐng)令牌的請(qǐng)求包括系統(tǒng)b的目標(biāo)地址。
具體地,申請(qǐng)令牌的請(qǐng)求可以為:http(s)://認(rèn)證中心服務(wù)器的host地址/asktoken?url=要登錄到的系統(tǒng)的地址。
舉例來說,申請(qǐng)令牌的請(qǐng)求可以為:http(s)://認(rèn)證中心服務(wù)器的host地址/asktoken?url=目標(biāo)地址。
步驟203:從申請(qǐng)令牌的請(qǐng)求中獲取目標(biāo)地址。
步驟204:獲取申請(qǐng)令牌的請(qǐng)求對(duì)應(yīng)的用戶的用戶信息。
可以從與系統(tǒng)a建立的會(huì)話中獲取用戶信息。
用戶信息可以包括:用戶的id等用于建立用戶會(huì)話的信息。
步驟205:根據(jù)申請(qǐng)令牌的請(qǐng)求,生成令牌。
具體地,可以生成一個(gè)guid(globallyuniqueidentifier,全局唯一標(biāo)識(shí)符)格式的字符串,將該字符串作為令牌。
作為令牌返回給發(fā)起令牌申請(qǐng)請(qǐng)求的登錄請(qǐng)求攔截器。
步驟206:保存令牌的生成時(shí)間、目標(biāo)地址和用戶信息。
具體地,可以將與令牌相關(guān)的用戶信息、令牌的生成時(shí)間和目標(biāo)地址生成一個(gè)記錄放在等待驗(yàn)證集合中。在保存目標(biāo)地址時(shí),可以直接保存申請(qǐng)令牌的請(qǐng)求的url(uniformresourelocator,統(tǒng)一資源定位器)。
步驟207:向系統(tǒng)a發(fā)送令牌,以使系統(tǒng)a向系統(tǒng)b發(fā)送令牌。
具體地,系統(tǒng)a可以通過以下格式將令牌發(fā)送給系統(tǒng)b:
http(s)://系統(tǒng)b的host地址/sso/令牌。
步驟208:接收系統(tǒng)b發(fā)來的令牌。
具體地,系統(tǒng)b接收到系統(tǒng)a發(fā)送的令牌后,將該令牌發(fā)送給認(rèn)證中心服務(wù)器進(jìn)行認(rèn)證。
系統(tǒng)b可以通過以下格式將令牌發(fā)送給認(rèn)證中心服務(wù)器:
http(s)://認(rèn)證中心服務(wù)器的host地址/verifytoken/令牌。
步驟209:判斷系統(tǒng)b發(fā)來的令牌是否滿足:接收到系統(tǒng)b發(fā)來的令牌的時(shí)間與令牌的生成時(shí)間的時(shí)間差不大于令牌失效時(shí)間長(zhǎng)度,且保存的目標(biāo)地址與發(fā)來令牌的系統(tǒng)的地址相同,如果是,則執(zhí)行步驟210,否則,執(zhí)行步驟211。
具體地,認(rèn)證中心服務(wù)器根據(jù)令牌的生成時(shí)間對(duì)接收到的令牌進(jìn)行時(shí)效性驗(yàn)證,確定該令牌是否有效。認(rèn)證中心服務(wù)器根據(jù)保存的目標(biāo)地址,驗(yàn)證接收到的令牌是否與保存的目標(biāo)地址相對(duì)應(yīng)。
認(rèn)證中心服務(wù)器可以根據(jù)與發(fā)來令牌的系統(tǒng)建立的會(huì)話確定接收到的令牌的來源,也就是能夠確定發(fā)送給令牌的系統(tǒng)的地址。
步驟210:向系統(tǒng)b發(fā)送用戶信息,以使系統(tǒng)b根據(jù)用戶信息創(chuàng)建用戶的用戶會(huì)話。
具體地,當(dāng)系統(tǒng)b接收到認(rèn)證中心服務(wù)器發(fā)來的用戶信息時(shí),則確定認(rèn)證中心服務(wù)器允許用戶登錄系統(tǒng)b。系統(tǒng)b根據(jù)用戶信息創(chuàng)建用戶會(huì)話,使得該用戶能夠登錄到系統(tǒng)b,實(shí)現(xiàn)與系統(tǒng)b的交互。
步驟211:禁止用戶登錄系統(tǒng)b,結(jié)束當(dāng)前流程。
在本發(fā)明實(shí)施例中,認(rèn)證中心服務(wù)器產(chǎn)生的令牌具有時(shí)效性,同時(shí)只能用于一個(gè)系統(tǒng)的單點(diǎn)登錄,認(rèn)證中心服務(wù)器接到令牌驗(yàn)證請(qǐng)求時(shí)會(huì)驗(yàn)證令牌的時(shí)效,并根據(jù)發(fā)來待驗(yàn)證的令牌的系統(tǒng)的地址驗(yàn)證該系統(tǒng)是否是要登錄到的系統(tǒng)。通過這些機(jī)制,在實(shí)現(xiàn)單點(diǎn)登錄的同時(shí),可以避免第三方惡意軟件截獲令牌并用于其他用途的可能,具有非常高的安全性。
如圖3所示,本發(fā)明實(shí)施例提供了一種認(rèn)證中心服務(wù)器,包括:
第一接收單元301,用于接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求;
第一獲取單元302,用于獲取所述申請(qǐng)令牌的請(qǐng)求對(duì)應(yīng)的用戶的用戶信息;
生成單元303,用于根據(jù)所述申請(qǐng)令牌的請(qǐng)求,生成令牌;
保存單元304,用于保存所述令牌的認(rèn)證信息和所述用戶信息;
發(fā)送單元305,用于向所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)送所述令牌,以使所述發(fā)起登錄請(qǐng)求的系統(tǒng)向要登錄到的系統(tǒng)發(fā)送所述令牌;
第二接收單元306,用于接收所述要登錄到的系統(tǒng)發(fā)來的所述令牌;
驗(yàn)證單元307,用于根據(jù)保存的所述令牌的認(rèn)證信息,對(duì)所述要登錄到的系統(tǒng)發(fā)來的所述令牌進(jìn)行驗(yàn)證,當(dāng)所述令牌通過驗(yàn)證時(shí),允許所述用戶登錄到所述要登錄到的系統(tǒng),向所述要登錄到的系統(tǒng)發(fā)送所述用戶信息,以使所述要登錄到的系統(tǒng)根據(jù)所述用戶信息創(chuàng)建所述用戶的用戶會(huì)話。
在本發(fā)明一實(shí)施例中,所述申請(qǐng)令牌的請(qǐng)求中包括:所述令牌對(duì)應(yīng)的所述要登錄到的系統(tǒng)的目標(biāo)地址;
進(jìn)一步包括:第二獲取單元,用于從所述申請(qǐng)令牌的請(qǐng)求中獲取所述目標(biāo)地址;
所述令牌的認(rèn)證信息包括:所述令牌的生成時(shí)間、所述目標(biāo)地址;
進(jìn)一步包括:設(shè)置單元,用于設(shè)置令牌失效時(shí)間長(zhǎng)度;
所述驗(yàn)證單元,用于判斷所述要登錄到的系統(tǒng)發(fā)來的所述令牌是否滿足:接收到所述要登錄到的系統(tǒng)發(fā)來的所述令牌的時(shí)間與所述令牌的生成時(shí)間的時(shí)間差不大于所述令牌失效時(shí)間長(zhǎng)度,且保存的所述目標(biāo)地址與發(fā)來所述令牌的系統(tǒng)的地址相同,如果是,則判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌通過驗(yàn)證,否則,判定所述要登錄到的系統(tǒng)發(fā)來的所述令牌沒有通過驗(yàn)證。
如圖4所示,在本發(fā)明一實(shí)施例中,該認(rèn)證中心服務(wù)器,進(jìn)一步包括:第三接收單元401,用于接收所述用戶輸入的用戶驗(yàn)證信息;
身份驗(yàn)證單元402,用于根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),觸發(fā)所述第一接收單元,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
在本發(fā)明一實(shí)施例中,該認(rèn)證中心服務(wù)器,所述驗(yàn)證單元,進(jìn)一步用于當(dāng)所述令牌通過驗(yàn)證時(shí),銷毀所述令牌。
本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的系統(tǒng),包括:
本發(fā)明實(shí)施例中任一所述的認(rèn)證中心服務(wù)器、至少一個(gè)設(shè)置有登錄請(qǐng)求攔截器的系統(tǒng);
所述至少一個(gè)設(shè)置有登錄請(qǐng)求攔截器的系統(tǒng)中包括:發(fā)起登錄請(qǐng)求的系統(tǒng)、要登錄到的系統(tǒng);
所述發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器,用于向所述認(rèn)證中心服務(wù)器發(fā)送申請(qǐng)令牌的請(qǐng)求,接收所述認(rèn)證中心服務(wù)器發(fā)來的令牌,將所述令牌發(fā)送給所述要登錄到的系統(tǒng);
所述要登錄到的系統(tǒng)中的登錄請(qǐng)求攔截器,用于攔截所述發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的所述令牌,向所述認(rèn)證中心服務(wù)器發(fā)送所述令牌,當(dāng)接收到所述認(rèn)證中心服務(wù)器發(fā)來的用戶信息時(shí),根據(jù)所述用戶信息創(chuàng)建用戶會(huì)話。
在本發(fā)明實(shí)施例中,為每個(gè)用戶可以單點(diǎn)登錄到的系統(tǒng)設(shè)置登錄請(qǐng)求攔截器,該登錄請(qǐng)求攔截器中封裝了使用本單點(diǎn)登錄的系統(tǒng)實(shí)現(xiàn)登錄和單點(diǎn)登錄所需的操作邏輯,每個(gè)用戶可以單點(diǎn)登錄到的系統(tǒng)經(jīng)過簡(jiǎn)單配置即可實(shí)現(xiàn)統(tǒng)一認(rèn)證和單點(diǎn)登錄服務(wù),極大的簡(jiǎn)化了單點(diǎn)登錄的實(shí)施過程,節(jié)約了實(shí)施成本。
本發(fā)明實(shí)施例提供的一種單點(diǎn)登錄的系統(tǒng)提供了認(rèn)證服務(wù)和攔截服務(wù),認(rèn)證服務(wù)由認(rèn)證中心服務(wù)器實(shí)現(xiàn),攔截服務(wù)由登錄請(qǐng)求攔截器來實(shí)現(xiàn)。認(rèn)證服務(wù)可以部署成單獨(dú)的web應(yīng)用,向?yàn)槊總€(gè)用戶可以單點(diǎn)登錄到的系統(tǒng)提供用戶認(rèn)證等服務(wù)。
如圖5所示,本發(fā)明實(shí)施例提供了一種單點(diǎn)登錄的系統(tǒng),包括:
本發(fā)明實(shí)施例中任一所述的認(rèn)證中心服務(wù)器501、發(fā)起登錄請(qǐng)求的系統(tǒng)502和要登錄到的系統(tǒng)503,發(fā)起登錄請(qǐng)求的系統(tǒng)502中包括登錄請(qǐng)求攔截器5021,要登錄到的系統(tǒng)503中包括登錄請(qǐng)求攔截器5031。
在本發(fā)明一實(shí)施例中,所述發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器,用于接收用戶發(fā)來的登錄所述要登錄到的系統(tǒng)的請(qǐng)求,判斷所述用戶是否已登錄所述認(rèn)證中心服務(wù)器,如果是,則執(zhí)行所述向所述認(rèn)證中心服務(wù)器發(fā)送申請(qǐng)令牌的請(qǐng)求,否則,將所述用戶重定向至所述認(rèn)證中心服務(wù)器的登錄界面,以使所述通過所述登錄界面輸入用戶驗(yàn)證信息;
所述認(rèn)證中心服務(wù)器,進(jìn)一步用于通過所述登錄界面接收所述用戶輸入的用戶驗(yàn)證信息;根據(jù)所述用戶驗(yàn)證信息對(duì)所述用戶進(jìn)行身份驗(yàn)證,當(dāng)所述用戶通過身份驗(yàn)證時(shí),執(zhí)行所述接收發(fā)起登錄請(qǐng)求的系統(tǒng)發(fā)來的申請(qǐng)令牌的請(qǐng)求,當(dāng)所述用戶沒有通過身份驗(yàn)證時(shí),結(jié)束當(dāng)前流程。
在本發(fā)明實(shí)施例中,認(rèn)證中心服務(wù)器可以提供賬號(hào)管理服務(wù)、用戶驗(yàn)證服務(wù)、令牌管理服務(wù)。其中,基于賬戶管理服務(wù),認(rèn)證中心服務(wù)器可以實(shí)現(xiàn)對(duì)用戶的賬戶進(jìn)行管理,可以對(duì)用戶設(shè)置需要采用的認(rèn)證方式?;谟脩趄?yàn)證服務(wù),認(rèn)證中心服務(wù)器可以實(shí)現(xiàn)對(duì)用戶進(jìn)行身份驗(yàn)證,可以提供用戶名+密碼、ca(certificateauthority,數(shù)字證書認(rèn)證中心)、usbkey等多種方式。其中,用輸入的用戶驗(yàn)證信息可以是用戶的賬號(hào)和密碼等。基于令牌管理服務(wù),認(rèn)證中心服務(wù)器可以實(shí)現(xiàn)令牌的生成、令牌的驗(yàn)證、令牌的銷毀等功能。
在本發(fā)明實(shí)施例中,當(dāng)用戶通過身份驗(yàn)證時(shí),認(rèn)證中心服務(wù)器中會(huì)創(chuàng)建該用戶的會(huì)話,并把該用戶重定向至發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器,發(fā)起登錄請(qǐng)求的系統(tǒng)中的登錄請(qǐng)求攔截器創(chuàng)建該用戶的用戶會(huì)話并把用戶導(dǎo)向至其原先請(qǐng)求的地址。
在本發(fā)明實(shí)施例中,當(dāng)用戶從一個(gè)部署了登錄請(qǐng)求攔截器的系統(tǒng)中,單點(diǎn)登錄到另一個(gè)系統(tǒng)時(shí),這兩個(gè)系統(tǒng)中必須部署登錄請(qǐng)求攔截器。
在本發(fā)明實(shí)施例中,當(dāng)用戶從一個(gè)部署了登錄請(qǐng)求攔截器的系統(tǒng)中發(fā)起單點(diǎn)登錄時(shí),需要向該系統(tǒng)發(fā)送一個(gè)包含了特定信息的單點(diǎn)登錄請(qǐng)求,該特定信息中包含了要單點(diǎn)登錄到的系統(tǒng)的地址,以及表示本請(qǐng)求是單點(diǎn)登錄請(qǐng)求的標(biāo)示字符串;該登錄請(qǐng)求攔截器攔截到此請(qǐng)求后,會(huì)向認(rèn)證中心服務(wù)器請(qǐng)求一個(gè)令牌,并把令牌通過一個(gè)特定的鏈接發(fā)送給要單點(diǎn)登錄到的系統(tǒng)。
其中,用戶發(fā)的單點(diǎn)登錄請(qǐng)求可以通過以下方式實(shí)現(xiàn):
http(s)://發(fā)起登錄請(qǐng)求的系統(tǒng)的host地址/tokensso?url=要登錄到的系統(tǒng)的地址
其中的“tokensso”用戶說明該請(qǐng)求是單點(diǎn)登錄請(qǐng)求。
在本發(fā)明實(shí)施例中,登錄請(qǐng)求攔截器可以是一個(gè)http請(qǐng)求的攔截組件。其主要作用是驗(yàn)證用戶是否登錄,并調(diào)用認(rèn)證中心服務(wù)器完成單點(diǎn)登錄。登錄請(qǐng)求攔截器封裝了第三方系統(tǒng)實(shí)現(xiàn)單點(diǎn)登錄的所有邏輯。
本發(fā)明實(shí)施例由于把相關(guān)邏輯封裝在了登錄請(qǐng)求攔截器中,大大減輕了其他系統(tǒng)的應(yīng)用難度,通過設(shè)置即可使用,主要是實(shí)施步驟如下:
部署認(rèn)證中心服務(wù)器的web應(yīng)用,并完成用戶初始,和令牌有效性時(shí)間設(shè)置。
在使用本發(fā)明實(shí)施例實(shí)現(xiàn)單點(diǎn)登錄的應(yīng)用系統(tǒng)bin目錄中部署登錄請(qǐng)求攔截器dll,并在web.config中添加如下信息:
<httpmodules>
<addname="ssoprovider"type="inspur.sso.provider,inspur.sso"/>
</httpmodules>
本發(fā)明實(shí)施例提供了一種可讀介質(zhì),包括執(zhí)行指令,當(dāng)存儲(chǔ)控制器的處理器執(zhí)行所述執(zhí)行指令時(shí),所述存儲(chǔ)控制器執(zhí)行本發(fā)明實(shí)施例中任一單點(diǎn)登錄的方法。
本發(fā)明實(shí)施例提供了一種存儲(chǔ)控制器,包括:處理器、存儲(chǔ)器和總線;
所述存儲(chǔ)器用于存儲(chǔ)執(zhí)行指令,所述處理器與所述存儲(chǔ)器通過所述總線連接,當(dāng)所述存儲(chǔ)控制器運(yùn)行時(shí),所述處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的所述執(zhí)行指令,以使所述存儲(chǔ)控制器執(zhí)行本發(fā)明實(shí)施例中任一單點(diǎn)登錄的方法。
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
本發(fā)明各個(gè)實(shí)施例至少具有如下有益效果:
1、在本發(fā)明實(shí)施例中,用戶需要登錄要登錄到的系統(tǒng)時(shí),發(fā)起登錄請(qǐng)求的系統(tǒng)需要獲取認(rèn)證中服務(wù)器發(fā)出令牌,將該令牌發(fā)送給要登錄到的系統(tǒng),要登錄到的系統(tǒng)將接收到的令牌發(fā)送給認(rèn)證中心服務(wù)器進(jìn)行驗(yàn)證,只有通過驗(yàn)證后,要登錄到的系統(tǒng)才會(huì)針對(duì)該用戶創(chuàng)建用戶會(huì)話,實(shí)現(xiàn)用戶登錄到要登錄到的系統(tǒng),如果用戶沒有令牌,或者令牌沒有通過驗(yàn)證,都無法登錄到要登錄到的系統(tǒng),提高了單點(diǎn)登錄的安全性。
2、在本發(fā)明實(shí)施例中,認(rèn)證中心服務(wù)器產(chǎn)生的令牌具有時(shí)效性,同時(shí)只能用于一個(gè)系統(tǒng)的單點(diǎn)登錄,認(rèn)證中心服務(wù)器接到令牌驗(yàn)證請(qǐng)求時(shí)會(huì)驗(yàn)證令牌的時(shí)效,并根據(jù)發(fā)來待驗(yàn)證的令牌的系統(tǒng)的地址驗(yàn)證該系統(tǒng)是否是要登錄到的系統(tǒng)。通過這些機(jī)制,在實(shí)現(xiàn)單點(diǎn)登錄的同時(shí),可以避免第三方惡意軟件截獲令牌并用于其他用途的可能,具有非常高的安全性。
3、在本發(fā)明實(shí)施例中,為每個(gè)用戶可以單點(diǎn)登錄到的系統(tǒng)設(shè)置登錄請(qǐng)求攔截器,該登錄請(qǐng)求攔截器中封裝了使用本單點(diǎn)登錄的系統(tǒng)實(shí)現(xiàn)登錄和單點(diǎn)登錄所需的操作邏輯,每個(gè)用戶可以單點(diǎn)登錄到的系統(tǒng)經(jīng)過簡(jiǎn)單配置即可實(shí)現(xiàn)統(tǒng)一認(rèn)證和單點(diǎn)登錄服務(wù),極大的簡(jiǎn)化了單點(diǎn)登錄的實(shí)施過程,節(jié)約了實(shí)施成本。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)〃·····”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)中。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。