跳至主要內容

應用程式層級存取控制 (App-level access control)

應用程式層級存取控制讓你可以限制誰能登入特定應用程式。你可以根據使用者、使用者角色、組織或組織角色,為每個應用程式建立允許規則,而不是讓 Logto 租戶中的所有註冊使用者都能存取每個應用程式。

當你有以下需求時,請使用應用程式層級存取控制:

運作方式

當應用程式層級存取控制未啟用時,你的 Logto 租戶中所有註冊使用者都可以登入該應用程式。

啟用後,只有符合至少一條已設定規則的使用者才能存取該應用程式。若使用者不符合任何規則,Logto 會拒絕登入並在應用程式收到權杖前顯示拒絕存取頁面。

應用程式層級存取控制會在授權流程與權杖續期時進行判斷。這代表:

  • 沒有存取權的使用者會在完成應用程式登入前被阻擋。
  • 當使用重新整理權杖 (Refresh token) 請求新權杖時,會再次檢查現有的應用程式授權。
  • 規則更新後,會影響未來的授權與權杖續期檢查,不會改變使用者的全域 Logto 工作階段。
備註:

應用程式層級存取控制與 基於角色的存取控制 (RBAC, Role-based access control) 是分開的。RBAC 透過在存取權杖 (Access token) 中發放權限 (Scopes) 控制使用者在驗證 (Authentication) 後能做什麼;應用程式層級存取控制則決定使用者是否能存取特定應用程式。

規則類型

你可以設定以下允許規則:

規則類型允許內容
使用者 (Users)指定的使用者可以存取應用程式。
使用者角色 (User roles)指派至選定使用者角色的使用者可以存取應用程式。
組織 (Organizations)選定組織的所有現有與未來成員都可以存取應用程式。
組織角色 (Organization roles)選定組織中具有指定組織角色的成員可以存取應用程式。

規則為加法關係。使用者只需符合其中一條規則即可存取應用程式。

例如,若一個應用程式同時有「Support team」使用者角色規則與「BigTree - Admin」組織角色規則,只要使用者被指派為 Support team 角色,或是 BigTree 組織的 Admin,就能存取該應用程式。

設定應用程式層級存取控制

  1. 前往 控制台 > 應用程式
  2. 開啟你想限制的應用程式。
  3. 切換到 規則 (Rules) 分頁。
  4. 自訂允許規則 (Custom allow rules) 中,點擊 新增規則 (Add rules)
  5. 選擇規則類型:
    • 使用者 (Users)
    • 使用者角色 (User roles)
    • 組織 (Organizations)
    • 組織角色 (Organization roles)
  6. 選取應被允許存取應用程式的使用者、角色、組織或組織角色。
  7. 開啟 啟用存取控制 (Enable access control)
  8. 點擊 儲存變更 (Save changes)
important:

你必須在啟用存取控制前設定至少一條允許規則,以避免不小心啟用存取控制卻沒有任何使用者能存取應用程式。

編輯或移除規則

你可以在應用程式的 規則 (Rules) 分頁更新允許清單。

  • 若要新增更多規則,點擊規則表格下方的 新增一條 (Add another)
  • 若要移除規則,點擊該規則列的刪除按鈕並確認操作。
  • 新增或移除規則後,點擊 儲存變更 (Save changes) 以套用更新。

若已啟用存取控制,Logto 會要求至少保留一條規則。若要移除所有規則,請先關閉 啟用存取控制 (Enable access control),再儲存變更。

規則變更對使用者的影響

應用程式層級存取控制不會終止使用者的全域 Logto 工作階段。使用者仍可能登入 Logto 及其他應用程式。

針對被限制的應用程式:

  • 不再符合任何允許規則的使用者,下次經過該應用程式授權流程時會被阻擋。
  • 若使用者已有與應用程式相關的授權,當應用程式使用重新整理權杖 (Refresh token) 請求新權杖時,Logto 會再次檢查規則。若使用者已無存取權,Logto 會拒絕該權杖請求。

這樣可將存取決策綁定於應用程式,同時避免對無關應用程式造成不必要的干擾。

與第三方應用程式權限的關係

針對 第三方應用程式,應用程式層級存取控制與權限管理解決不同問題:

  • 應用程式層級存取控制 決定使用者是否能登入第三方應用程式。
  • 權限管理 決定第三方應用程式在使用者授權頁面 (Consent screen) 上可請求哪些使用者資料範圍、API 資源範圍與組織範圍。

若兩者皆有設定,使用者必須先通過應用程式層級存取控制,才能授權第三方應用程式。

與受保護應用程式 (Protected App) 的關係

針對 受保護應用程式 (Protected App),應用程式層級存取控制限制誰能通過 Logto 驗證層並存取受保護的來源伺服器。

受保護應用程式的驗證規則仍決定哪些路徑需要驗證 (Authentication);應用程式層級存取控制則決定哪些已驗證的 Logto 使用者能存取受保護應用程式。

最佳實踐

  • 優先使用使用者角色或組織角色規則,這比維護大量個別使用者清單更容易。
  • 當組織內所有人都應存取應用程式時,使用組織規則。
  • 當僅特定組織成員應存取應用程式時,使用組織角色規則。
  • 當使用者變更角色、加入或離開組織時,請檢查存取規則。
  • 在心智模型中將 RBAC 權限與應用程式層級存取控制分開思考:應用程式層級存取控制回答「這個使用者能否存取這個應用程式?」,而 RBAC 則回答「這個使用者存取 API 或組織功能後能做什麼?」