簡體   English   中英

每個設備是否應該讓 Keycloak 中的用戶通過資源所有者密碼憑據進行身份驗證

[英]Should each device get a user in Keycloak authenticated through Resource Owner Password Credentials

我正在使用人類用戶和物聯網設備在 Keycloak 中實現身份驗證系統。

人類用戶:通過 spa 訪問系統並使用基於標准重定向的身份驗證流程。

物聯網設備:該用例涉及許多高價值設備,這些設備不具有交互性,需要將遙測數據傳輸到后端並訪問它們自己的數據以及來自相關用戶的數據。 我目前的計划是使用資源所有者密碼憑據授予,因為可以在配置期間使用憑據設置嵌入式系統。

我的想法是,這將使我能夠使用 Keycloak 組和角色進行權限管理和用戶 <-> 設備關聯。

這種方法有什么本質上的錯誤嗎?

我目前的計划是使用資源所有者密碼憑據授予,因為可以在配置期間使用憑據設置嵌入式系統。

源代碼可以閱讀:

資源所有者密碼憑證授予類型適用於資源所有者與客戶端具有信任關系的情況,例如設備操作系統或高特權應用程序。 授權服務器在啟用此授權類型時應特別小心,並且僅在其他流程不可行時才允許它。

此授權類型適用於能夠獲取資源所有者憑據(用戶名和密碼,通常使用交互式表單)的客戶端。 它還用於使用直接身份驗證方案(例如 HTTP Basic 或 Digest 身份驗證)將現有客戶端遷移到 OAuth,方法是將存儲的憑據轉換為訪問令牌:

您的用例是否滿足這些限制?

如果不是,請考慮改用客戶端憑據授予

使用機器對機器 (M2M) 應用程序(例如 CLI、守護程序或在后端運行的服務)時,系統會驗證和授權應用程序而不是用戶。 對於這種情況,用戶名 + 密碼或社交登錄等典型身份驗證方案沒有意義。 相反,M2M 應用程序使用客戶端憑據流(在 OAuth 2.0 RFC 6749,第 4.4 節中定義),其中它們傳遞其客戶端 ID 和客戶端密鑰來驗證自己並獲取令牌。

因此,在后者中,您將使用客戶端密碼而不是使用用戶名和密碼進行身份驗證。

我的想法是,這將使我能夠使用 Keycloak 組和角色進行權限管理和用戶 <-> 設備關聯。

您仍然可以向機密客戶端添加聲明並將其用於權限管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM