• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于CAS 和OAuth 的統(tǒng)一認(rèn)證授權(quán)系統(tǒng)設(shè)計(jì)

    2021-06-24 07:59:40強(qiáng)
    關(guān)鍵詞:交易系統(tǒng)令牌單點(diǎn)

    李 強(qiáng)

    (中電金信軟件有限公司,浙江 杭州310000)

    0 引言

    銀行的應(yīng)用系統(tǒng)越來越多,每個(gè)系統(tǒng)單獨(dú)管理各自的用戶,容易形成信息孤島,分散的用戶管理模式阻礙了銀行應(yīng)用向平臺化演進(jìn)。當(dāng)銀行的業(yè)務(wù)發(fā)展到一定規(guī)模,構(gòu)建統(tǒng)一的賬戶管理體系將是必不可少的,因?yàn)樗倾y行未來互聯(lián)網(wǎng)云平臺的重要基礎(chǔ)設(shè)施,能夠?yàn)槠脚_帶來統(tǒng)一的賬號管理、身份認(rèn)證和用戶授權(quán),為銀行帶來諸如跨系統(tǒng)單點(diǎn)登錄、第三方授權(quán)等基礎(chǔ)能力,為構(gòu)建開放平臺和業(yè)務(wù)生態(tài)提供必要的條件。

    常見的賬戶管理產(chǎn)品有:CA 公司的SiteMinder,其價(jià)格昂貴;IBM 公司的 Tivoli Access Manager,其需購買且和 IBM 其他產(chǎn)品結(jié)合較緊密;Atlassian 公司的 Crowd,其需購買且和自家的 Jira、Confluence 結(jié)合較緊密;Oracle 公司的OpenAM,它是一個(gè)率先開源的認(rèn)證授權(quán)產(chǎn)品,對Oracle 的產(chǎn)品支持較好;耶魯太學(xué)發(fā)起的開源項(xiàng)目CAS(Central Authentication Service),其簡單、實(shí)效、安全,支持多種客戶端,支持單點(diǎn)登錄(Single Sign On,SSO)、開放授權(quán)(Open Authorization,OAuth)等。

    考慮到費(fèi)用、易用性、支持廣泛度等因素,本設(shè)計(jì)選擇了開源產(chǎn)品CAS。

    1 CAS 和 OAuth 介 紹

    CAS 包含服務(wù)端和客戶端兩部分,服務(wù)端是一個(gè)獨(dú)立部署的WAR 包,負(fù)責(zé)用戶認(rèn)證??蛻舳素?fù)責(zé)處理對受保護(hù)資源的訪問,支持 Java、.NET、PHP 等多種軟件平臺,極太地方便了各種系統(tǒng)的接入[1]。

    CAS 支持 SSO, 即用戶登錄一個(gè)系統(tǒng)后, 再訪問權(quán)限范圍內(nèi)的其他系統(tǒng)時(shí)不用再次登錄[2-3]。 常見的如:用戶登錄淘寶網(wǎng)頁后,再訪問天貓網(wǎng)頁時(shí)無需再次登錄即可使用。

    OAuth 是實(shí)現(xiàn)第三方授權(quán)的開放框架,在用戶無需提供賬號和密碼的情況下,允許第三方應(yīng)用訪問用戶存于某服務(wù)商的資源(如個(gè)人信息、照片等)[4]。常見的如: 在微信中點(diǎn)擊某應(yīng)用后, 會被請求授權(quán),點(diǎn)擊授權(quán)后,可以在這個(gè)被授權(quán)應(yīng)用里看到自己的微信名稱、頭像等信息。 這就是被授權(quán)應(yīng)用訪問了自己在微信里的數(shù)據(jù)。

    OAuth 框架定義了四種角色[5],以微信授權(quán)為例:(1)資源所有者:指正在使用微信的用戶;(2)資源服務(wù)器:指微信保存用戶數(shù)據(jù)的服務(wù)器;(3)客戶端:指在微信里請求用戶授權(quán)的應(yīng)用;(4)授權(quán)服務(wù)器:用戶點(diǎn)擊授權(quán)后會轉(zhuǎn)到此服務(wù)器進(jìn)行授權(quán)。

    CAS 支持 OAuth,其結(jié)合 OAuth,可簡化客戶端的開發(fā),提供標(biāo)準(zhǔn)的授權(quán)流程,支持 Web 應(yīng)用、桌面應(yīng)用、手機(jī)應(yīng)用。 CAS 使用 HTTP 進(jìn)行對接,支持各種軟件的接入[6]。

    2 系統(tǒng)總體設(shè)計(jì)

    本文采用CAS+OAuth 的方案來實(shí)現(xiàn)銀行內(nèi)部和外部的統(tǒng)一認(rèn)證授權(quán),可以實(shí)現(xiàn)用戶的單點(diǎn)登錄,也可以為外部的第三方應(yīng)用授權(quán),從而使用外部的服務(wù)。

    本設(shè)計(jì)的架構(gòu)圖如圖 1 所示,描述如下:(1)用戶訪問 Web 應(yīng)用、桌面應(yīng)用或手機(jī)應(yīng)用;(2)應(yīng)用服務(wù)器將用戶轉(zhuǎn)到 CAS 服務(wù)器;(3)CAS 服務(wù)器是獨(dú)立部署的,負(fù)責(zé)認(rèn)證授權(quán),它需要訪問目錄服務(wù)器(LDAP)或數(shù)據(jù)庫;(4)用戶在 CAS 服務(wù)器上完成認(rèn)證授權(quán)后,CAS 服務(wù)器將發(fā)放 SSO 票據(jù)或 OAuth 令牌給用戶;(5)用戶的后續(xù)訪問會自動攜帶票據(jù)或令牌來完成,避免了再次登錄授權(quán)。

    圖1 架構(gòu)圖

    3 系統(tǒng)詳細(xì)設(shè)計(jì)

    3.1 單點(diǎn)登錄

    TGT(Ticket Granting Ticket),代表了用戶的一次單點(diǎn)登錄會話[7]。

    ST(Service Ticket),代表了 CAS 服務(wù)器對用戶在某應(yīng)用的一次授權(quán)[7]。

    假設(shè)有兩個(gè)被保護(hù)的銀行內(nèi)部應(yīng)用:貸款系統(tǒng)和卡系統(tǒng),下面描述了用戶訪問時(shí)是怎樣保護(hù)資源的。

    3.1.1 第一次訪問貸款系統(tǒng)

    用戶第一次訪問貸款系統(tǒng)時(shí),被轉(zhuǎn)到CAS 服務(wù)器去認(rèn)證。 用戶在 CAS 的登錄頁面輸入賬號和密碼后登錄成功。 CAS 服務(wù)器為用戶創(chuàng)建一個(gè)SSO會話,并把 TGT、ST 返回給用戶。 瀏覽器會把 TGT保存起來,并攜帶 ST 去訪問貸款系統(tǒng)。 貸款系統(tǒng)轉(zhuǎn)到CAS 服務(wù)器去驗(yàn)證ST,驗(yàn)證通過后,貸款系統(tǒng)為用戶創(chuàng)建貸款系統(tǒng)會話。 瀏覽器保存貸款系統(tǒng)會話,后續(xù)訪問都會攜帶這個(gè)會話,貸款系統(tǒng)驗(yàn)證會話通過后,向用戶顯示訪問的資源。 時(shí)序圖如圖2所示[7]。

    圖2 第一次訪問貸款系統(tǒng)的時(shí)序圖

    3.1.2 第二次訪問貸款系統(tǒng)

    用戶第二次訪問貸款系統(tǒng)時(shí),因?yàn)橐殉晒Φ卿涍^, 所以瀏覽器會自動攜帶貸款系統(tǒng)會話去訪問,貸款系統(tǒng)驗(yàn)證會話通過后,向用戶顯示訪問的資源。時(shí)序圖如圖 3 所示[7]。

    圖3 第二次訪問貸款系統(tǒng)的時(shí)序圖

    3.1.3 第一次訪問卡系統(tǒng)

    用戶第一次訪問卡系統(tǒng),因?yàn)闆]有登錄過,所以瀏覽器自動攜帶TGT 去CAS 做認(rèn)證,認(rèn)證通過后,CAS 服務(wù)器把 ST 返回給用戶。 瀏覽器會攜帶 ST 去訪問卡系統(tǒng)。 卡系統(tǒng)轉(zhuǎn)到 CAS 服務(wù)器去驗(yàn)證 ST,驗(yàn)證通過后,卡系統(tǒng)為用戶創(chuàng)建卡系統(tǒng)會話。 瀏覽器保存卡系統(tǒng)會話,后續(xù)訪問都會攜帶這個(gè)會話,卡系統(tǒng)驗(yàn)證會話通過后,向用戶顯示訪問的資源,整個(gè)流程不會要求用戶再次登錄。 時(shí)序圖如圖4 所示[7]。

    3.2 第三方授權(quán)

    OAuth 框架里的安全機(jī)制是令牌。 應(yīng)用可以通過一個(gè)令牌在特定的時(shí)間段內(nèi)訪問特定的資源[8]。

    假設(shè)有個(gè)銀行外部的第三方交易系統(tǒng),它需要用戶在銀行的授權(quán)系統(tǒng)里登錄并對它授權(quán)后才能使用。

    3.2.1 交易系統(tǒng)令牌訪問

    第三方交易系統(tǒng)首先向用戶請求授權(quán),用戶登錄銀行的授權(quán)系統(tǒng)并進(jìn)行授權(quán)后會發(fā)放授權(quán)許可,交易系統(tǒng)向CAS 服務(wù)器出示授權(quán)許可,并請求訪問令牌。CAS 服務(wù)器校驗(yàn)授權(quán)許可通過后,發(fā)放訪問令牌,交易系統(tǒng)憑令牌訪問資源。 時(shí)序圖如圖5 所示[9]。

    3.2.2 交易系統(tǒng)刷新令牌

    令牌是有時(shí)效性的,當(dāng)其失效后,第三方交易系統(tǒng)需憑刷新令牌再次請求一個(gè)新的訪問令牌。 時(shí)序圖如圖 6 所示[9]。

    圖4 第一次訪問卡系統(tǒng)的時(shí)序圖

    圖5 第三方交易系統(tǒng)令牌訪問的時(shí)序圖

    4 系統(tǒng)驗(yàn)證

    4.1 單點(diǎn)登錄

    4.1.1 運(yùn)行環(huán)境

    為了完成單點(diǎn)登錄的驗(yàn)證,規(guī)劃了3 臺服務(wù)器,如圖 7 所示。 服務(wù)器全部預(yù)裝 CentOS 7[10],每臺安裝的軟件如表 1 所示[11-15]。

    圖6 第三方交易系統(tǒng)刷新令牌的時(shí)序圖

    圖7 單點(diǎn)登錄驗(yàn)證服務(wù)器設(shè)計(jì)

    表1 單點(diǎn)登錄驗(yàn)證軟件清單

    4.1.2 驗(yàn)證

    (1)瀏覽器訪問 https://www.app1.com,因沒有登錄過,所以會跳轉(zhuǎn)到圖8 所示的登錄頁面,并且地址變?yōu)?https://www.sso.com/cas/login?service=https-%3A%2F%2Fwww.app1.com%2F,從地址可知,這是由CAS 提供的登錄頁面。

    (2)輸入用戶名和密碼登錄后,分析CAS 的日志可以看出它首先對用戶名和密碼進(jìn)行了認(rèn)證。

    WHO:liqiang

    WHAT:Supplied credentials:

    [UsernamePasswordCredential(username=liqiang)]

    ACTION:AUTHENTICATION_SUCCESS

    圖8 單點(diǎn)登錄的登錄頁面

    APPLICATION:CAS

    (3)認(rèn)證通過后,CAS 服務(wù)器自動創(chuàng)建了 Ticket Granting Ticket(TGT)。

    WHO:liqiang

    WHAT:

    TGT-2-************************bo-47opiGacsso

    ACTION:TICKET_GRANTING_TICKET_CREATED

    APPLICATION:CAS

    (4)緊接著 CAS 服務(wù)器又為 APP1 創(chuàng)建了 Service Ticket(ST)。

    WHO:liqiang

    WHAT:ST-3-BP9pvxb0-i-rwvrxQFQ8mn5py-wsso for

    https://www.app1.com/

    ACTION:SERVICE_TICKET_CREATED

    APPLICATION:CAS

    (5)CAS 服務(wù)器把 TGT 和 ST 返回給 APP1 服務(wù)器,APP1 服務(wù)器再次攜帶ST 到 CAS 服務(wù)器進(jìn)行校驗(yàn)。

    WHO:liqiang

    WHAT:ST-3-BP9pvxb0-i-rwvrxQFQ8mn5py-wsso

    for https://www.app1.com/

    ACTION:SERVICE_TICKET_VALIDATED

    APPLICATION:CAS

    (6)ST 校 驗(yàn) 通 過 ,APP1 服務(wù)器顯示APP1 的歡迎頁面,如圖 9 所示。

    圖9 單點(diǎn)登錄成功轉(zhuǎn)到APP1

    (7)瀏覽器訪問 https://www.app2.com,因已登錄過APP1,TGT 已經(jīng)保存在瀏覽器緩存了,所以去CAS 認(rèn)證時(shí)會攜帶 TGT,又因?yàn)樵?TGT 是有效的,所以 CAS 會自動為 APP2 創(chuàng)建 ST。

    WHO:liqiang

    WHAT:ST-4--1a-tB2GwHoxrcZwLGlKQ-46ET0sso

    for https://www.app2.com/

    ACTION:SERVICE_TICKET_CREATED

    APPLICATION:CAS

    (8)CAS 服務(wù)器把 ST 返回給 APP2 服務(wù)器后,APP2 服務(wù)器再次攜帶 ST 到 CAS 服務(wù)器進(jìn)行校驗(yàn)。

    WHO:liqiang

    WHAT:ST-4--1a-tB2GwHoxrcZwLGlKQ-46ET0sso

    for https://www.app2.com/

    ACTION:SERVICE_TICKET_VALIDATED

    APPLICATION:CAS

    (9)ST 校 驗(yàn) 通 過 ,APP2 服務(wù)器顯示APP2 的歡迎頁面,如 圖 10 所 示 。 訪 問 APP2 的整個(gè)過程并沒有再要求用戶登錄。

    圖10 直接進(jìn)入APP2

    4.2 第三方授權(quán)

    4.2.1 運(yùn)行環(huán)境

    為了完成第三方授權(quán)的驗(yàn)證, 規(guī)劃了 2 臺服務(wù)器,如 圖 11 所 示。 服務(wù)器全部預(yù)裝 CentOS 7[10],每臺安裝的軟件如表2 所示[11-15]。

    圖11 第三方授權(quán)驗(yàn)證服務(wù)器設(shè)計(jì)

    表2 第三方授權(quán)驗(yàn)證軟件清單

    4.2.2 驗(yàn)證

    (1)瀏覽器訪問 https://www.app3.com,會顯示圖 12 所示頁面。

    圖12 提示使用第三方賬號登錄

    (2)點(diǎn)擊下方的“使用第三方賬號登錄”鏈接,會跳轉(zhuǎn)到如圖13 所示的登錄頁面,并且地址欄變?yōu)閔ttps://www.sso.com/cas/login?service=https%3A%2F%2Fwww.sso.com%2Fcas%2Foauth2.0%2Fcallback-Authorize%3Fclient_id%3Dots%26redirect_uri%3Dhttps-%253A%252F%252Fwww.app3.com%252Fauth%26response_type%3Dcode%26client_name%3DCasOAuthClient,從地址可知,這是由CAS 提供的登錄頁面,客戶 ID是ots,代表了驗(yàn)證用的交易系統(tǒng)。

    圖13 轉(zhuǎn)到第三方應(yīng)用去登錄

    (3)輸入用戶名和密碼,登錄成功后會顯示授權(quán)頁面,如圖 14 所示。

    (4)點(diǎn)擊 Allow 按鈕,同意授權(quán)給第三方交易系統(tǒng)后, 分析日志可以看出 CAS 服務(wù)器給 APP3 服務(wù)器返回了一個(gè)授權(quán)碼。

    OC-1-NrqJTop-h7IYyOtxCmYGUS0mKFVGaII3

    (5)APP3 服務(wù)器收到授權(quán)碼后,攜帶授權(quán)碼向CAS 服務(wù)器發(fā)出以下請求去獲取訪問令牌:

    https://www.sso.com/cas/oauth2.0/accessToken?grant_type=authorization_code&client_id=ots&client_secret=12345-6&code=OC-1-NrqJTop-h7IYyOtxCmYGUS0mKFVGaII3-&redirect_uri=https://www.app3.com/auth

    (6)CAS 服務(wù)器校驗(yàn)授權(quán)碼通過,生成訪問令牌,并把令牌返回給APP3 服務(wù)器。

    access_token =AT -1 -AjYYAXSxR2M8EQuDqvHL3V -QwKN871hSN&expires_in=28800

    (7)APP3 服務(wù)器得到訪問令牌后,攜帶令牌去CAS 服務(wù)器獲取用戶信息。

    https://www.sso.com/cas/oauth2.0/profile?access_token=AT-1-AjYYAXSxR2M8EQuDqvHL3VQwKN871hSN

    (8)CAS 服務(wù)器校驗(yàn)令牌通過, 向 APP3 服務(wù)器返回用戶信息。

    {"service":"https://www.app3.com/auth","attributes":{"credentialType":"UsernamePasswordCredential"},"id":"liqiang","client_id":"ots"}

    (9)APP3 服務(wù)器轉(zhuǎn)到登錄成功頁面,并顯示獲取到的用戶名,如圖15 所示。

    圖15 獲取授權(quán)成功轉(zhuǎn)到第三方交易系統(tǒng)

    5 結(jié)論

    本文對 CAS 協(xié)議和OAuth 框架進(jìn)行了簡單介紹, 并基于此給出了統(tǒng)一認(rèn)證授權(quán)系統(tǒng)的設(shè)計(jì),隨后結(jié)合實(shí)戰(zhàn)對每一步進(jìn)行了驗(yàn)證與分析。 以此為技術(shù)基礎(chǔ)可以逐步整合銀行內(nèi)部現(xiàn)有應(yīng)用系統(tǒng)的用戶登錄認(rèn)證,規(guī)范新應(yīng)用系統(tǒng)的開發(fā),為銀行帶來跨系統(tǒng)單點(diǎn)登錄、第三方授權(quán)等基礎(chǔ)能力,為進(jìn)一步構(gòu)建開放平臺和業(yè)務(wù)生態(tài)提供了必要的條件。 此外, 若能通過域賬號與統(tǒng)一認(rèn)證授權(quán)系統(tǒng)進(jìn)行集成,將更加有助于簡化用戶的管理,進(jìn)一步提高系統(tǒng)集成度和用戶的使用體驗(yàn)。

    猜你喜歡
    交易系統(tǒng)令牌單點(diǎn)
    山東首套ETC匝道準(zhǔn)自由流預(yù)交易系統(tǒng)正式運(yùn)行
    ETC拓展應(yīng)用場景下的多源異構(gòu)交易系統(tǒng)
    稱金塊
    歷元間載波相位差分的GPS/BDS精密單點(diǎn)測速算法
    基于路由和QoS令牌桶的集中式限速網(wǎng)關(guān)
    超薄異型坯連鑄機(jī)非平衡單點(diǎn)澆鑄實(shí)踐與分析
    山東冶金(2019年5期)2019-11-16 09:09:10
    動態(tài)令牌分配的TCSN多級令牌桶流量監(jiān)管算法
    下一代高性能交易所數(shù)據(jù)儲存和備份的探討
    數(shù)字電視地面?zhèn)鬏斢脝晤l網(wǎng)與單點(diǎn)發(fā)射的效果比較
    16噸單點(diǎn)懸掛平衡軸的優(yōu)化設(shè)計(jì)
    许昌市| 宜黄县| 定边县| 大方县| 凤山市| 安图县| 海南省| 汉中市| 时尚| 古浪县| 镇沅| 会宁县| 渭源县| 大新县| 通山县| 平原县| 新昌县| 泗阳县| 商都县| 循化| 瓦房店市| 永康市| 鄂托克前旗| 麻城市| 徐汇区| 晋中市| 拜城县| 平江县| 三门峡市| 沛县| 广河县| 磐石市| 富源县| 华安县| 柯坪县| 迁安市| 东兰县| 玉田县| 容城县| 舞钢市| 水富县|