[英]WSO2 Api Manager OAuth2 DCR security in public native mobile app
我正在設計用於iOS和Android的公共本機移動應用程序中的安全性,該應用程序使用WSO2 Api Manager(APIM)使用公開可用的API。
因此,我了解與此設置相關的安全性問題,因此我想將OAuth2應用於本機應用程序(根據RFC 8252進行 )。
我知道此類應用程序應該做的第一件事是通過Store API中描述的接口向WSO2 APIM服務器注冊,以便為每個應用程序接收唯一的使用者密鑰/秘密,即動態客戶端注冊(DCR)。
以下是為獲取密鑰而應發送的請求示例:
curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -d @payload.json https://localhost:9443/client-registration/v0.11/register
為此,應使用TLS 1.2對其進行保護,並且存在使用WSO2 APIM的用戶名/密碼(在這種情況下為Base64編碼admin:admin
)的基本授權。
我了解至少應受到基本授權的保護,以提供針對DoS攻擊的安全性,但另一方面,這意味着應使用username:password
分發應用程序,以便能夠進行DCR。
而且,如果將其隨此信息一起分發,那么每個人都可以獲取該信息並請求進行惡意應用程序注冊。
為了安全地在WSO2 APIM中注冊,如何處理本地移動應用程序? 我認為我對它的工作原理缺乏了解。
這是否意味着安裝移動應用程序的用戶應在WSO2 APIM上擁有自己的帳戶,並應在安裝后立即提供憑據?
如果用戶在WSO2 APIM中沒有憑據,但具有從WSO2 APIM通過API訪問的后端服務的憑據,情況會如何? 可以使用此類憑據來通過WSO2 APIM的DCR注冊應用程序嗎? (當前后端和WSO2 APIM身份驗證尚未集成)
您對APIM的工作方式的理解部分正確。 讓我解釋並糾正整個問題。
基本上,此方案涉及3個參與方。
如您所知,API開發人員可以通過Publisher門戶開發和發布API。 然后,應用程序開發人員可以在API Store Portal中看到那些API。 現在,如果他們想在其移動應用程序中使用這些API,則需要訂閱這些API。 為此,他們需要API管理器中的某些內容來表示其移動應用程序。 為此,他們在API Store門戶中創建一個應用程序,然后通過創建的應用程序訂閱API。
現在,應用程序開發人員需要密鑰才能通過其移動應用程序調用API。 為此,他們通過商店門戶進行了DCR呼叫,並生成了消費者密鑰和消費者秘密對。 使用它們,它們可以生成訪問令牌。
有幾種不同的生成訪問令牌的方式。 我們稱它們為贈款類型。 例如,密碼授予類型,客戶端憑證授予類型,授權代碼授予類型等。客戶端憑證授予類型僅需要使用消費者密鑰和消費者秘密對來生成訪問令牌,其中密碼授予類型還需要用戶名和密碼。消費者密鑰,消費者秘密對。 因此,如果您的移動應用程序用戶位於某種用戶存儲區中,則可以使用密碼授予類型,這可以幫助您識別APIM級別的每個用戶。 如果沒有這種機制,則可以使用客戶端憑據授予類型,通過這種類型,您不能在APIM級別區分最終用戶。 在此,由密碼授予類型生成的令牌代表最終用戶,而由客戶端憑證授予類型生成的令牌代表應用程序。
無論哪種情況,應用程序開發人員都必須將消費者密鑰和消費者秘密對嵌入到他們的移動應用程序中,以便最終用戶可以生成訪問令牌來訪問API。 重要的是用戶不必單獨呼叫DCR。 這是應用程序開發人員的任務。
我希望這有幫助。
EIDT:
如果允許用戶注冊移動應用程序並將其保存在用戶存儲中,則可以使用授權代碼授予類型。 然后,您只能在移動應用程序中啟用授權碼授予類型,並設置回調URL。 因此,如果有人竊取了消費者的秘密並在其他應用程序中使用它,則即使通過授權代碼授予類型,他們也無法使用它來生成令牌,因為回調URL已在服務器端進行了驗證。
另一個選擇是隱式授予類型,它不需要客戶端秘密,但是有其自身的缺陷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.