亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種微信開放平臺(tái)OAuth 認(rèn)證授權(quán)代理的實(shí)現(xiàn)

        2022-12-23 09:36:04趙慶明
        科海故事博覽 2022年34期
        關(guān)鍵詞:微信用戶

        趙慶明

        (成都理工大學(xué)圖書館,四川 成都 610059)

        微信是騰訊公司在2011 年1 月發(fā)布的一款為智能終端提供即時(shí)通訊服務(wù)的免費(fèi)軟件[1]。當(dāng)前,微信已經(jīng)滲入了人們生活的方方面面,基于微信又衍生出了可以讓第三方應(yīng)用系統(tǒng)接入微信的微信開放平臺(tái)[2]。無論是瀏覽微信公眾號推文,還是通過微信公眾號菜單來瀏覽指定的網(wǎng)站鏈接,還是直接使用微信掃碼來登錄某個(gè)網(wǎng)站,都將直接或間接地涉及微信開放平臺(tái)OAuth認(rèn)證授權(quán)的功能。

        基于OAuth 協(xié)議,單位可自建統(tǒng)一身份認(rèn)證系統(tǒng),也可以接入微信、QQ、支付寶、微博等社交軟件提供的第三方認(rèn)證授權(quán)系統(tǒng)。OAuth 協(xié)議相比于傳統(tǒng)的采用賬號密碼對認(rèn)證的模式便捷很多,大大減少了用戶在“認(rèn)證”過程中的額外負(fù)擔(dān)。微信在我國的廣泛使用,逐步演化成網(wǎng)站應(yīng)用接入第三方OAuth認(rèn)證的首選平臺(tái)。

        騰訊公司為避免微信OAuth 被濫用設(shè)置了限制:(1)網(wǎng)站應(yīng)用程序需用域名訪問。(2)每個(gè)公眾號最多支持綁定2 個(gè)域名。(3)一個(gè)開發(fā)者賬號最多允許創(chuàng)建10 個(gè)網(wǎng)站應(yīng)用。對于類似于高校圖書館有大量網(wǎng)站應(yīng)用系統(tǒng)的情況,這些限制往往難以滿足接入需求?;诖嗽?,我們采用目前流行的ASP.NET Core 6 Web Api[3]構(gòu)建了一個(gè)“微信OAuth 認(rèn)證授權(quán)代理服務(wù)器”,在滿足微信開放平臺(tái)的要求下,實(shí)現(xiàn)了通過1個(gè)公眾號、1 個(gè)域名和1 個(gè)開發(fā)者賬號,突破了當(dāng)前的限制,滿足了大量網(wǎng)站應(yīng)用系統(tǒng)接入微信OAuth 認(rèn)證授權(quán)的需求。

        1 OAuth 協(xié)議規(guī)范

        OAuth 協(xié)議最初設(shè)計(jì)的目的是用于解決一個(gè)普遍的“如何通過代理訪問受保護(hù)的資源”的問題,2007 年10 月開始建立標(biāo)準(zhǔn),直至2010 年1 月發(fā)布了OAuth1.0正式版協(xié)議RFC5489[4]。在2012 年10 月發(fā)布了OAuth 2.0 正式版協(xié)議RFC6749[5]后,該協(xié)議開始被廣泛地應(yīng)用于各類認(rèn)證授權(quán)服務(wù)。

        在OAuth 協(xié)議中,當(dāng)應(yīng)用程序需要訪問服務(wù)器上的資源的時(shí)候,服務(wù)器通過使用“第三方”為該用戶授權(quán)頒發(fā)的“令牌”對每次訪問進(jìn)行身份鑒別和權(quán)限識別,然后再對資源進(jìn)行訪問。全程無需用戶提供自己的賬號密碼對等敏感信息,因此避免了用戶機(jī)密信息泄漏的可能,同時(shí)又能保證應(yīng)用可以通過服務(wù)器訪問到指定的用戶資源。即使用戶突然更改了賬號密碼,也不會(huì)影響已經(jīng)完成的認(rèn)證授權(quán)和接下來即將進(jìn)行的認(rèn)證和授權(quán)。

        當(dāng)網(wǎng)站應(yīng)用被接入到當(dāng)前流行的社交軟件所提供的OAuth 認(rèn)證授權(quán)系統(tǒng)后,用戶在登錄網(wǎng)站應(yīng)用時(shí)只需簡單的幾步點(diǎn)擊就可完成認(rèn)證和授權(quán),從而讓“認(rèn)證”變得非常簡單。

        2 基于微信的認(rèn)證授權(quán)

        微信作為一款重量級的社交軟件,已在人們的日常生活中扮演起了重要的角色。騰訊公司以微信為依托建立了“微信開放平臺(tái)”,并開放了大量的、實(shí)用的功能,其中與OAuth 認(rèn)證授權(quán)相關(guān)的包括微信公眾號網(wǎng)頁授權(quán)、移動(dòng)應(yīng)用微信登錄、網(wǎng)站應(yīng)用微信登錄、智能家居小程序用戶授權(quán)等。

        對于網(wǎng)站應(yīng)用來說,“微信公眾號網(wǎng)頁授權(quán)”與“網(wǎng)站用微信登錄”是兩個(gè)類似但不同的用戶認(rèn)證授權(quán)方式?!拔⑿殴娞柧W(wǎng)頁授權(quán)”用于在微信中訪問網(wǎng)站應(yīng)用,而“網(wǎng)站用微信登錄”則用于在PC 端訪問網(wǎng)站應(yīng)用。

        微信認(rèn)證授權(quán)流程分為三步:(1)引導(dǎo)用戶進(jìn)入授權(quán)頁面,獲取微信開放平臺(tái)返回的code 參數(shù)。(2)應(yīng)用程序后臺(tái)通過code 換取網(wǎng)頁授權(quán)access_token 與openid。(3)如果請求授權(quán)時(shí)scope 參數(shù)為snsapi_use rinfo,那么還可以再通過access_token 和 openid 來獲取微信用戶基本信息。通常情況下,到達(dá)第2 步獲取ope nid 后就可完成用戶身份識別。

        2.1 “微信公眾號網(wǎng)頁授權(quán)”的交互邏輯

        用戶在微信客戶端中授權(quán)訪問第三方網(wǎng)站應(yīng)用時(shí),需要使用“微信公眾號網(wǎng)頁授權(quán)”模式[6]。網(wǎng)站應(yīng)用程序可以通過微信公眾號網(wǎng)頁授權(quán)機(jī)制實(shí)現(xiàn)用戶登錄邏輯,進(jìn)而實(shí)現(xiàn)自身的業(yè)務(wù)邏輯。微信用戶的微信ID 與該微信公眾號的微信ID 會(huì)通過一種計(jì)算得到一個(gè)被稱為openid 的字符串。此openid 就標(biāo)志著該微信用戶基于該微信公眾號的身份。在獲取openid 之后,就意味著與微信相關(guān)的認(rèn)證授權(quán)已經(jīng)完成。

        對于“微信公眾號網(wǎng)頁授權(quán)”,微信開放平臺(tái)提供了兩種權(quán)限不同的scope 參數(shù)。當(dāng)scope 為snsapi_base 時(shí),發(fā)起的網(wǎng)頁授權(quán)屬于靜默授權(quán),用來獲取進(jìn)入頁面的微信用戶的openid。當(dāng)scope 為snsapi_userinfo時(shí),還可以獲取微信用戶的個(gè)人基本信息。

        用戶在微信中打開該網(wǎng)站應(yīng)用中的網(wǎng)頁授權(quán)頁面時(shí),微信開放平臺(tái)會(huì)將被訪問的地址重定向到該網(wǎng)站應(yīng)用指定的回調(diào)頁面網(wǎng)址,并在網(wǎng)址后添加一個(gè)名為code的參數(shù)。接下來,網(wǎng)站應(yīng)用后臺(tái)通過code 參數(shù)從微信開放平臺(tái)獲取一個(gè)接口調(diào)用憑證access_token 和openid,然后在網(wǎng)站后臺(tái)實(shí)現(xiàn)對應(yīng)的業(yè)務(wù)邏輯。當(dāng)scope 為字符串snsapi_base 時(shí),屬于靜默授權(quán),微信用戶的感知就是直接進(jìn)入了回調(diào)頁面(業(yè)務(wù)頁面),并不會(huì)感知到登錄過程。當(dāng)scope 為字符串snsapi_userinfo 時(shí),如果用戶之前關(guān)注過該公眾號,則效果同snsapi_base 一樣,用戶也不會(huì)感知到登錄過程。倘若用戶并未曾關(guān)注過該公眾號,則在微信中會(huì)增加一個(gè)要求用戶同意授權(quán)的操作,用戶同意授權(quán)后方可繼續(xù)執(zhí)行。

        2.2 “網(wǎng)站用微信登錄”的交互邏輯

        當(dāng)用戶在PC 端網(wǎng)站應(yīng)用上選擇使用微信登錄后,網(wǎng)站應(yīng)用會(huì)顯示一個(gè)微信登錄的二維碼。接下來,用戶使用微信掃描該二維碼,然后在微信中點(diǎn)擊“允許”進(jìn)行授權(quán),該P(yáng)C 端網(wǎng)站就可以完成登錄,然后再去實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯。此功能為被稱為“使用微信登錄網(wǎng)頁”,該功能可以讓微信用戶使用微信身份安全地登錄第三方網(wǎng)站應(yīng)用。

        “使用微信登錄網(wǎng)頁”同樣是一個(gè)基于OAuth2.0 協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信認(rèn)證授權(quán)系統(tǒng),在網(wǎng)站上的接入方法與“微信公眾號網(wǎng)頁授權(quán)”的形式上保持一致,僅有請求的url 與參數(shù)上的差別。

        用戶使用移動(dòng)端微信掃描PC 機(jī)上的登錄二維碼,然后授權(quán)登錄接入了“使用微信登錄網(wǎng)頁”的網(wǎng)站應(yīng)用后,同“微信公眾號網(wǎng)頁授權(quán)”一樣,微信開放平臺(tái)會(huì)將PC 機(jī)上被訪問的url 地址重定向到該網(wǎng)站應(yīng)用指定的回調(diào)頁面網(wǎng)址,同樣在網(wǎng)址后添加一個(gè)名為code 的參數(shù)。接下來,網(wǎng)站就可以通過參數(shù)code 獲取到用戶的接口調(diào)用憑證access_token 和該微信用戶對應(yīng)于該網(wǎng)站應(yīng)用的openid。

        2.3 兩種交互邏輯的異同

        “網(wǎng)站用微信登錄”與“微信公眾號網(wǎng)頁授權(quán)”的交互邏輯類似。在“微信公眾號網(wǎng)頁授權(quán)”中,網(wǎng)頁認(rèn)證和授權(quán)以及訪問網(wǎng)站數(shù)據(jù)均在微信中進(jìn)行。在“網(wǎng)站用微信登錄”中,網(wǎng)頁認(rèn)證和授權(quán)在移動(dòng)端微信中進(jìn)行,而訪問網(wǎng)站卻在PC 端的進(jìn)行。在網(wǎng)站應(yīng)用的后臺(tái),除了提供的參數(shù)稍有差別外,這兩種認(rèn)證和授權(quán)在形式上保持一致。

        3 微信開放平臺(tái)OAuth 認(rèn)證的限制

        目前,在使用微信公眾號進(jìn)行“微信公眾號網(wǎng)頁授權(quán)”時(shí),并不支持IP 地址回調(diào),僅支持最多2 個(gè)完全域名的回調(diào),從而一個(gè)公眾號僅能支持最多2 網(wǎng)站應(yīng)用的認(rèn)證和授權(quán)。但一個(gè)企業(yè)或單位往往為用戶提供的網(wǎng)站應(yīng)用程序不止2 個(gè),因此這種限制導(dǎo)致往往無法滿足網(wǎng)站應(yīng)用比較多的情況。

        在“網(wǎng)站用微信登錄”中,微信開放平臺(tái)中每個(gè)開發(fā)者賬號中最多可創(chuàng)建10 個(gè)網(wǎng)站應(yīng)用,每個(gè)應(yīng)用中要求綁定一個(gè)完全域名。同樣,如果網(wǎng)站應(yīng)用數(shù)量超過10 個(gè),這種也會(huì)限制也會(huì)帶來不能滿足實(shí)際需求的問題。

        無論是額外再申請微信公眾號,還是額外再申請開發(fā)者賬戶,除了必要的費(fèi)用外,還需要通過一系列資質(zhì)認(rèn)證。尤其是在日后的維護(hù)時(shí),還需要配合騰訊公司完成一系列審核工作,對于網(wǎng)站應(yīng)用接入微信開放平臺(tái)帶來了諸多不便。

        4 擴(kuò)展的OAuth 認(rèn)證授權(quán)

        我們創(chuàng)建了一個(gè)“代理”認(rèn)證授權(quán)的服務(wù)器,并將其接入微信開放平臺(tái)。通過該“服務(wù)器”對微信開放平臺(tái)中的OAuth2 授權(quán)認(rèn)證進(jìn)行了擴(kuò)展,滿足了接入網(wǎng)站應(yīng)用的各種個(gè)性化的需求。對于微信開放平臺(tái)來說,“認(rèn)證授權(quán)代理”服務(wù)器是一個(gè)完整的、合規(guī)的應(yīng)用程序網(wǎng)站,而該網(wǎng)站真正的用途是用來進(jìn)行“ 模擬”和“代理”微信開放平臺(tái)的認(rèn)證和授權(quán)。

        圖1 基于“代理”模式的微信網(wǎng)頁OAuth2 授權(quán)認(rèn)證方式

        在整個(gè)數(shù)據(jù)交互過程中,微信開放平臺(tái)僅僅可以感知到作為“合法網(wǎng)站”的“認(rèn)證授權(quán)代理服務(wù)器”在申請認(rèn)證授權(quán),并不會(huì)感知到真正的“網(wǎng)站應(yīng)用”,從而突破了微信開放平臺(tái)的限制。因此,接入的網(wǎng)站應(yīng)用不再有任何限制。但由于突破了此限制,原本由微信開放平臺(tái)所控制的“應(yīng)該被授權(quán)的”網(wǎng)站應(yīng)用程序,轉(zhuǎn)由“認(rèn)證授權(quán)代理服務(wù)器”通過配置相應(yīng)的參數(shù)進(jìn)行控制和管理。

        5 網(wǎng)站應(yīng)用程序的接入

        在標(biāo)準(zhǔn)模式下,網(wǎng)站應(yīng)用與微信開放平臺(tái)直接進(jìn)行數(shù)據(jù)交互。在“代理”模式下,該功能則由“認(rèn)證授權(quán)代理服務(wù)器”代為實(shí)現(xiàn)。從而,“認(rèn)證授權(quán)代理服務(wù)器”是認(rèn)證授權(quán)過程中的一個(gè)中間環(huán)節(jié),不但要完成與微信用戶之間的數(shù)據(jù)交互,而且要完成與網(wǎng)站應(yīng)用程序、微信開放平臺(tái)之間的數(shù)據(jù)交互,也是整個(gè)實(shí)現(xiàn)過程中邏輯最復(fù)雜的部分。

        我們采用了ASP.NET Core 6 Web Api,將其業(yè)務(wù)邏輯進(jìn)行了封裝,并且提供了與微信開放平臺(tái)中完全相同的接口(源碼地址:https://github.com/zmrbak/WxOAut hManager)。相比于標(biāo)準(zhǔn)的OAuth 認(rèn)證授權(quán)模式,在網(wǎng)站應(yīng)用程序接入時(shí),除了需更換請求url 中的主機(jī)地址外,與標(biāo)準(zhǔn)的模式保持一致。用戶的前端的操作上與仍然與標(biāo)準(zhǔn)的模式下保持一致,僅僅在整個(gè)授權(quán)期間會(huì)增加一次用戶難以覺察的“url 重定向”操作。

        6 結(jié)語

        本文討論了一種擴(kuò)展微信開放平臺(tái)的標(biāo)準(zhǔn)的OAuth認(rèn)證授權(quán)的模式,讓“認(rèn)證授權(quán)代理服務(wù)器”代為其進(jìn)行微信認(rèn)證和授權(quán),有效地突破了微信開放平臺(tái)的種種限制,只需一個(gè)微信公眾號、一個(gè)域名、一個(gè)開發(fā)者賬號,就可以滿足任意數(shù)量、任意網(wǎng)站“合法”“合規(guī)”地使用微信開放平臺(tái)中的OAuth 認(rèn)證授權(quán)服務(wù),在用戶的體驗(yàn)上與標(biāo)準(zhǔn)模式保持一致。

        猜你喜歡
        微信用戶
        微信
        微信
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        微信
        微信
        微信
        微信
        Camera360:拍出5億用戶
        少妇高潮喷水久久久影院| 精品亚洲国产亚洲国产| 日本一区二区在线高清| 久久久久成人精品无码中文字幕| 999久久久免费精品国产| 免费观看久久精品日本视频| 中文字幕一区二区三区6| 国产免费人成视频在线| 肉色丝袜足j视频国产| 午夜精品久久久久久久久久久久| 久久亚洲道色宗和久久| 美女扒开内裤露黑毛无遮挡| 色播视频在线观看麻豆| 日韩av午夜在线观看| 人人玩人人添人人澡| 伊人亚洲综合网色AV另类| 偷拍与自偷拍亚洲精品| 亚洲久悠悠色悠在线播放| 亚洲人精品亚洲人成在线| 日韩在线无| 免费高清视频在线观看视频| 国内精品国产三级国产| 国产乱人对白| 日韩插啊免费视频在线观看| 日本在线观看不卡| 亚洲偷自拍国综合第一页国模 | 国产精品办公室沙发| 久久亚洲国产成人精品性色 | 国产亚洲女在线线精品| 亚洲一区亚洲二区中文字幕| 99re6在线视频精品免费| 海角国精产品一区一区三区糖心 | 性无码一区二区三区在线观看 | 大胸美女吃奶爽死视频| 极品少妇人妻一区二区三区| 成人无码av一区二区| 亚洲av成人无码网天堂| 男女高潮免费观看无遮挡| 少妇人妻无奈的跪趴翘起| 蜜臀av午夜一区二区三区| 欧美三级一区|