999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OAuth2認證的RESTAPI設計與實踐

2021-07-19 20:30:53劉曉暉秦子實
電腦知識與技術 2021年15期
關鍵詞:用戶系統

劉曉暉 秦子實

摘要:隨著微服務技術架構與企業各業務單元中臺的興起,越來越多的系統會開放各種用途的REST API,對API調用者的身份認證成為保護數據安全的第一道防線。認證方法應具有易集成部署與API耦合度低等特性,以方便對現有API認證方式的改進。本文介紹基于OAuth 2.0標準的密碼式令牌認證的設計與部署方法,可對REST API進行用戶名密碼式身份認證及權限鑒別,該方法具有代碼量低易于部署等特點,適用于企業內部各應用系統的REST API認證。

關鍵詞:OAuth 2.0;REST API;Python

中圖分類號:TP393? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)15-0056-02

1 概述

隨著企業間業務系統及服務的聯系越來越緊密,各系統和服務均開放了較多的API,供其他系統或用戶進行調用。為了保護各系統的數據,需要對API調用者做出身份認證,并進行權限鑒別。普通的API第三方身份認證方式為第三方系統直接索取并提交用戶的身份認證信息,API獲得身份信息且確認后返回數據。該機制索取用戶身份信息,首先存在信任問題和信息泄露風險;其次用戶身份認證信息缺少失效機制,無法限制第三方獲取數據的時效;此外,使用用戶身份認證的權限通常即使用系統本身的權限管理機制,耦合程度較高,不利于開發、管理及后期擴展。

OAuth 2.0(以下簡稱OAuth2)是目前較流行的授權機制,通常用于向第三方應用提供用戶數據或其他接口數據。OAuth2使用令牌(token)代替用戶名密碼進行身份認證與權限鑒別,因此用戶信息泄露較低,并可以設置令牌時效,也可以直接在令牌中寫入權限信息。

本文針對普通的API第三方認證方式中的不足,在企業內部網絡中,使用OAuth2密碼式令牌進行第三方應用系統的身份認證及權限鑒別。文中代碼示例使用Python的FastAPI庫進行演示。

2 OAuth2標準簡介

2.1 OAuth 2.0標準

OAuth 2.0標準定義在RFC 6749文件中,引入令牌作為授權層,以隔離用戶(資源所有者)與第三方(資源請求者)。即OAuth2的作用就是向第三方發放令牌。標準中定義了四種授權方式:授權碼、隱藏式、密碼式、客戶端憑證。本文主要介紹在企業內部網絡中各系統間API的認證及鑒權操作,因此僅介紹密碼式OAuth2的應用。

2.2 密碼式OAuth2原理

密碼式OAuth2的認證過程為四種授權方式中較簡單的一種。僅需要第三方向應用系統提供一次用戶的用戶名密碼,確認后應用系統向第三方發放令牌,此后第三方均使用該令牌進行數據請求,具體過程如下:

假設用戶在a.com中存放有數據,其中a.com/me用于查看用戶個人信息,a.com/me/items用于查看用戶擁有的所有條目。此時用戶希望b.com獲取其在a.com中的數據,則b.com主機向a.com/token發送POST令牌請求,表單附帶用戶的用戶名密碼及希望獲得的權限。若a.com收到請求后通過身份認證及權限鑒別,則向b.com返回令牌(對稱加密),令牌包含用戶、權限及令牌時效。

此后,b.com向a.com請求數據時(如請求a.com/me),僅需要在請求頭部附帶Authorization字段,附帶令牌數據即可。a.com將解析請求頭部中的令牌,解密令牌確認身份及權限后,返回數據。

可以發現,整個過程除了在第一次請求中傳遞用戶信息外,在令牌時效內的其他請求均僅通過令牌確認身份及權限。過程如下圖所示:

3 密碼式OAuth2應用

3.1 應用環境

本文使用Python的FastAPI構建REST API,均使用json封裝數據。FastAPI支持密碼式OAuth2,使用jwt加密token。

3.2 令牌發放接口設計

假設原系統目前具有兩個REST API:a.com/me和a.com/me/items,為了支持OAuth2,需要添加a.com/token接口用于身份認證及令牌發放。本文為了方便演示,使所有API使用同一發布,發放令牌的token與原有的兩個API應共享同一個SHA256密鑰,用于加解密密鑰。本文使用openssl生成一個32位的密鑰,設置令牌時效時間15分鐘。

a.com/token通過POST方式接收Form表單,按照密碼式OAuth2標準規定,表單應包括四個字段:grant_type字段值固定為password;scope字段值為約定的權限碼,權限碼間用空格分隔;username字段為用戶名;password字段為密碼。

a.com/token返回一個使用jwt加密的json對象,access_token鍵的值即為令牌,這是一個加密的json對象,token_type值固定為bearer,其內容類似:

加密的內容解密后為{"sub": "johndoe", "scopes": ["me", "items"], "exp": 1593831859},通常約定sub鍵對應令牌主題,即用戶名,scopes鍵對應權限列表,exp鍵對應時效時間戳。

3.3 現有API集成令牌認證設計

首先需要建立oauth2認證模板,包括指明認證方式為密碼式、認證接口為a.com/token、權限包括“me”和“items”:

接下來需要編寫一個認證函數,用于解析請求頭部的Authorization字段,獲得令牌并使用jwt進行解密,其函數簽名如下:

現有的其他API需要集成密碼式OAuth2認證時,只需要修改函數簽名即可,例如檢查用戶賬戶是否可用的函數,只需在簽名中增加認證函數和執行現有接口所需的權限:

當調用現有API get_current_active_user時,認證函數get_current_user的security_scopes參數即為了現有API索取的權限列表“["me"]”,token參數即為此次請求頭部附帶的認證令牌。使用jwt解析token后即可獲得用戶名和此次令牌包含的權限列表,使用用戶名查詢該用戶所具有的權限,與令牌中包含的權限以及API索取的權限進行對比,即可明確此次請求是否被授權。

所需多個權限的API定義時,可直接在scopes列表中添加多個權限碼,也可以進行鏈式認證,如下所示:

a.com/me/items/接口需要“me”和“item”兩個權限,可以復用a.com/me/的認證方法get_current_active_user先索取“me”權限,再使用本接口僅索取“items”權限即可。只要權限列表鏈中的一個權限未通過認證,接口就會返回訪問未授權。

4 結束語

本文介紹了在企業內部場景中,使用OAuth2認證進行API第三方認證的設計方法。在對現有API添加OAuth2認證功能時,該方法具有安全性高、代碼改動少的特點。此外OAuth2所用的對稱加解密執行效率高,對現有系統的執行效率影響較小。因此,該方法是一種對現有系統影響較小的API第三方認證集成方法。

【通聯編輯:梁書】

猜你喜歡
用戶系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
主站蜘蛛池模板: 日韩欧美中文字幕一本| 中文字幕一区二区人妻电影| 无码精品一区二区久久久| 欧美自慰一级看片免费| 国产农村妇女精品一二区| 不卡午夜视频| 国产毛片基地| 精品夜恋影院亚洲欧洲| 国产H片无码不卡在线视频 | 亚洲中文字幕无码爆乳| 五月激情综合网| 波多野衣结在线精品二区| 免费可以看的无遮挡av无码| 一本久道久综合久久鬼色| 欧美日韩国产成人高清视频 | 亚洲人成网站日本片| 中文字幕无码制服中字| 亚洲视屏在线观看| 亚洲国产精品无码AV| 欧美激情视频一区| 国产精品v欧美| 亚洲爱婷婷色69堂| 亚洲国产亚综合在线区| a级毛片一区二区免费视频| 国产一区二区福利| 日韩中文字幕亚洲无线码| 动漫精品中文字幕无码| 日韩在线视频网站| 丁香婷婷在线视频| 女同国产精品一区二区| 丰满人妻久久中文字幕| 精品一区二区无码av| 国产偷国产偷在线高清| 人人澡人人爽欧美一区| 福利在线一区| 99久久精品国产综合婷婷| 欧美精品亚洲精品日韩专区| 精品国产三级在线观看| 亚洲欧美一区二区三区蜜芽| 亚洲成a人片在线观看88| 国产97区一区二区三区无码| 美女内射视频WWW网站午夜| 久久国产高潮流白浆免费观看| 亚洲欧美精品在线| 69精品在线观看| 欧美性猛交xxxx乱大交极品| 久久性妇女精品免费| 片在线无码观看| 色综合综合网| 2021国产在线视频| 日韩av无码精品专区| 白浆视频在线观看| 国产经典在线观看一区| а∨天堂一区中文字幕| 亚洲中文制服丝袜欧美精品| 欧美亚洲一二三区| 波多野结衣一区二区三区AV| 国产久草视频| 国产美女无遮挡免费视频| 成人精品视频一区二区在线| 91久久精品国产| 欧美日韩理论| 国产成人精品一区二区不卡 | 亚洲精品在线观看91| 亚洲视频黄| 国产成年女人特黄特色大片免费| 一区二区三区四区在线| 波多野结衣久久精品| 2022国产无码在线| 久久国产拍爱| 久久久久青草线综合超碰| 日韩av无码DVD| 亚洲精品无码不卡在线播放| 免费毛片网站在线观看| 免费人成在线观看成人片| 白浆视频在线观看| 欧美精品另类| 亚洲成年人网| 亚洲中文字幕无码mv| 在线视频一区二区三区不卡| 美美女高清毛片视频免费观看| 2024av在线无码中文最新|