低程式碼如何構建支援OAuth2.0的後端Web API

葡萄城技術團隊發表於2022-07-13

OAuth2.0

OAuth 是一個安全協議,用於保護全球範圍內大量且不斷增長的Web API。它用於連線不同的網站,還支援原生應用和移動應用於雲服務之間的連線,同時它也是各個領域標準協議中的安全層。

(圖片來源網路)

接下來我們來仔細聊聊OAuth2.0是什麼,有什麼用處。

OAuth 2.0介紹

再說OAuth2.0之前,我們先聊聊OAuth。大家可以把它理解為OpenID的補充,但是服務內容完全不同。OAuth允許使用者授權第三方網站訪問他們儲存在其他網站伺服器上的資訊,而不需要分享他們的訪問許可或他們資料的所有內容。

OAuth2.0儘管是OAuth協議的延續版本,但並不向前相容OAuth 1.0(即完全廢止了OAuth1.0)。OAuth 2.0更加關注客戶端開發的簡易性,通過批准組織在資源擁有者和HTTP服務商之間的互動動作來代表使用者,或者通過第三方應用代表使用者獲得訪問的許可權。同時為Web應用、桌面應用和手機,以及起居室裝置提供專門的認證流程。

在這個過程中不需要應用去充當資源擁有者的身份,因為令牌明確表示了授予的訪問權。OAuth2.0令牌可以限制客戶端只能執行資源擁有者授權的操作。

雖然 OAuth2.0基本上不關心它所保護的資源型別,但它確實很適合當今的RESTful Web服務,也很適合Web應用和原生應用。從小型單使用者應用,到數百萬使用者的網際網路API,它都可以處理。在受控的企業環境中,它能對新一代內部業務API和系統訪問進行管理,在它所成長起來的紛亂複雜的web環境中,它也能遊刃有餘地保護各種面向使用者的API。

OAuth 2.0功能

(圖片來源網路)

OAuth2.0框架能讓第三方應用以有限的許可權訪問HTTP服務,可以通過構建資源擁有者與HTTP服務間的許可互動機制,讓第三方應用代表資源擁有者訪問服務,或者通過授予許可權給第三方應用,讓其代表自己訪問服務。

作為一個授權框架,OAuth2.0關注的是如何讓一個系統元件獲取另外一個系統元件的訪問許可權。在OAuth2.0的世界中,最常見的情形是客戶端應用代表資源擁有者(通常是終端使用者)訪問受保護資源。到目前為止,我們需要關心如下元件:

1.資源擁有者有權訪問API,並能將API訪問許可權委託出去。

2.受保護資源是資源擁有者有許可權訪問的元件,這樣的元件形式有很多,大多數情況下是某種形式的Web API,資源指的是這些API支援讀、寫和其他操作。

3.客戶端是代表資源擁有者訪問受保護資源的軟體。OAuth2.0中,只要軟體使用了受保護資源上的API,它就是客戶端。

說完了OAuth2.0,就要開始介紹我們今天要說的另一個主角——低程式碼。

低程式碼

這裡我們引用業內資深人士的話:"低程式碼是基於視覺化和模型驅動理念,結合雲原生與多端體驗技術,它能夠在多數業務場景下實現大幅度的提效降本,為專業開發者提供了一種全新的高生產力開發正規化。 另一方面,低程式碼能夠讓不懂程式碼的人,通過"拖拉拽"開發元件,就能完成應用程式的搭建。 從意義上講,低程式碼可以彌補日益擴大的專業技術人才缺口,同時促成業務與技術深度協作的終極敏捷形態"。

程式碼界的“兩低一高”即Low Code,Low Cost,High Efficiency(低程式碼、低成本、高效率),指的就是低程式碼開發平臺帶來的便捷和高效,“追求最少的程式碼量,實現最多的業務功能”。這裡面比較難的是如何把握功能實現的靈活性和操作學習的簡易性的平衡。

低程式碼開發平臺作為一種新型的開發工具,它的出現減少了程式碼編寫量,簡化了開發過程,縮短了開發週期,提高了開發效率,節省了開發成本。低程式碼開發平臺可以幫助使用者更好的去設計並實現需求,使用者只需要關注業務邏輯,而不需要去關注程式碼編寫。普通使用者在接受簡單培訓後也能DIY出自己所需的各種管理軟體。

介紹完了兩個主角,現在就正式開始為大家介紹低程式碼如何支援OAuth 2.0。

低程式碼如何支援OAuth 2.0

低程式碼開發應用平臺和其他系統的應用互動資料的時候,有以下兩種情況:

1、低程式碼應用從第三方系統中獲取資料(比如獲取淘寶,京東的資料)

2、第三方系統從低程式碼應用獲取資料(比如使用低程式碼開發了一個MES,現在有其他人希望獲取這個MES系統的資料)

在這裡需要注意: OAuth 2.0使用的憑證式(client_credentials)和密碼式(password)兩種。

首先需要授權設定,登入管理入口網站,然後單擊設定→Web安全性頁面,如下所示,管理員可以為每個第三部分配置客戶端識別符號和密碼。

單擊新增客戶端授權按鈕,然後編輯授權型別、允許範圍和令牌生存期等。

憑證式實現

  1. 從使用者管理入口網站(檢視地址:https://gcdn.grapecity.com.cn/showtopic-87565-1-1.html

2、獲取client_credentials訪問令牌。

這是client_credentials授予型別請求引數列表:

呼叫結果

2.新增具有訪問令牌的使用者。(狀態:200 OK)

在步驟2中複製" access_token"值,並在" access_token"值之前插入" Bearer",然後按如下所示將其新增到鍵" Authorization"的值中,並再次請求新增使用者。

呼叫結果

密碼式

1.從使用者管理網站獲取密碼訪問令牌(URL:http//xa-dd3-bks:22345/UserService/connect/token)。

這是密碼授予型別請求引數列表:

呼叫結果

2.新增具有訪問令牌的使用者。(狀態:200 OK)

在步驟4中複製" access_token"值,並在" access_token"值之前插入" Bearer",然後按如下所示將其新增到鍵" Authorization"的值中,並再次請求新增使用者。

呼叫結果

這樣我們就順利實現了使用低程式碼順利支援OAuth2.0。

如果大家對更多線上Demo感興趣的話,可以訪問:

https://www.grapecity.com.cn/solutions/huozige/demo/inventory

相關文章