我有一個場景,我需要向原生 iOS / Android 應用程式添加身份驗證和授權。該應用程式允許商店的員工執行他們的業務運營:
- 每個商店都有一個在服務器上為其創建的帳戶。
- 多個設備可以在同一個商店中使用。商店中的所有設備都應該訪問相同的資料。
- 多個用戶(員工)可以使用商店內的任何設備。
- 識別執行特定操作的實際用戶是在應用程式本身內完成的。
我查看了可用的流程,我對在這種情況下最適合什么感到有點困惑。
- 我曾考慮過使用設備流程,但我不確定移動設備不是輸入受限設備(例如健身追蹤器或智能電視)是否正確。
- Client Credentials 流程也不適合,因為移動設備無法安全地存盤機密資訊,而且我不僅在尋找對服務器的授權請求,而且還在以某種方式對商店本身進行身份驗證,以便我可以回傳其特定資料.
- 我留下了帶有 PKCE 流程的授權代碼,但我仍然不確定這是否是正確的方法,因為我知道我不是在驗證用戶,而是屬于商店的設備。因此,也許我可以將商店本身視為資源所有者,并且在商店中作業的特權個人(可能是商店所有者)將使用此流程來驗證商店。
您認為(3)是正確的方法還是您推薦不同的流程?
uj5u.com熱心網友回復:
OP提出了兩個問題:
Q1。什么 OAuth 2.0 流程適合原生移動應用程式?
Q2。誰是資源所有者以及如何對它們進行身份驗證?
A1。帶有 PKCE 的授權代碼適用于商店中的本機應用程式。
A2。根據 OP 提供的資訊,store 本身就是一個資源所有者。每個商店都有一個在身份驗證服務器中定義的身份,可能帶有憑證,例如密碼。在這種情況下,所有商店員工都將使用此身份向身份驗證服務器進行身份驗證。這將簡化令牌的創建,因為令牌的主題將是商店本身。應用程式將在 OAuth 2.0 交換之外處理員工的身份。這將滿足所有員工都可以訪問相同的商店范圍資料的要求。這在資源服務器中很容易實作,因為令牌的主題是商店。
應用程式必須鎖定在給定商店中使用單一身份。這將避免在多家商店作業的員工的人為錯誤。這可以通過多種方式在應用程式級別完成。
商店身份可以由商店管理員在每臺設備上簡單地配置。
如果設備可以在商店之間輪換,或者員工使用個人手機并且他們在商店之間旅行,那么應用程式可以呼叫一個 API,該 API 根據商店的 IP 地址回傳商店的身份。這也會將應用程式的使用限制在內部網路中。
在任何一種情況下,員工都只需在驗證身份驗證服務器時輸入商店密碼。
uj5u.com熱心網友回復:
我理解這些擔憂,因為您需要在安全性和可管理性之間取得平衡。瞄準一個既能滿足當前需求又具有良好未來可能性的選項。
首選流程
代碼流將是正確的選擇,因為它具有最佳的靈活性。使用 RFC8252 中的 AppAuth模式。
面向未來的安全
從長遠來看,要考慮的是執行其中一項或兩項的能力,可以通過多種方式完成:
- 識別用戶
- 識別設備
代碼流允許多種選擇:
將您當前的應用內用戶標識轉換為在代碼流期間運行的自定義身份驗證操作 - 您可以將其用作主要因素,也可能用作次要因素
將來,商店員工可以通過用戶友好的設備(例如WebAuthn 密鑰而不是密碼)登錄
如果每個設備不同,移動應用程式可以存盤客戶端憑據。在更高的安全設定中,這可能是一個強大的加密憑證。移動最佳實踐中有關此的更多資訊。這使您能夠識別設備。
當然,你不需要做所有這些,但是在使用代碼流時工具是存在的,并且添加更高級的安全性通常不需要任何代碼更改。
初始推出
棘手的部分是設計一個沒有阻塞問題的初始部署。另一種選擇可能涉及每個商店 2 個用戶帳戶 - 一個具有管理員權限 - 并使用簡單密碼。
當然,您還應該考慮威脅——例如,如果一名員工執行了惡意操作,如何跟蹤用戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/463980.html
