跳到主要内容

应用级访问控制

应用级访问控制让你可以限制谁可以登录到特定应用程序。你无需让 Logto 租户中的每个注册用户都能访问每个应用,而是可以为每个应用基于用户、用户角色、组织或组织角色创建允许规则。

当你希望:

  • 仅让员工或管理员访问内部应用时。
  • 受保护应用限制给特定用户组时。
  • 只允许特定客户或合作伙伴访问第三方 OIDC / OAuth 应用时。
  • 在向所有人开放前,先向试点组推出新应用时。

可以使用应用级访问控制。

工作原理

当应用级访问控制被禁用时,你的 Logto 租户中的所有注册用户都可以登录该应用程序。

当它被启用时,只有匹配至少一个已配置规则的用户才能访问该应用。如果用户未匹配任何规则,Logto 会拒绝登录尝试,并在应用收到令牌前显示访问被拒绝页面。

应用级访问控制会在授权 (Authorization) 流程和令牌续期时进行评估。这意味着:

  • 没有访问权限的用户会在完成应用登录前被拦截。
  • 当使用刷新令牌请求新令牌时,会再次检查现有的应用授权。
  • 更新规则会影响后续的授权 (Authorization) 和令牌续期检查,但不会改变用户的全局 Logto 会话。
备注:

应用级访问控制与基于角色的访问控制 (RBAC)是分开的。RBAC 通过在访问令牌中发放权限 (scopes) 控制用户在认证 (Authentication) 后可以做什么。应用级访问控制则控制用户是否可以访问某个特定应用。

规则类型

你可以配置以下允许规则:

规则类型允许内容
用户指定用户可以访问该应用。
用户角色被分配到选定用户角色的用户可以访问该应用。
组织 (Organizations)选定组织的所有当前和未来成员都可以访问该应用。
组织角色在选定组织中拥有选定组织角色的成员可以访问该应用。

规则是叠加的。用户只需匹配其中一条规则即可访问应用。

例如,如果一个应用同时有“支持团队”用户角色规则和“BigTree - Admin”组织角色规则,那么只要用户被分配了支持团队角色,或在 BigTree 组织中是 Admin,就可以访问该应用。

配置应用级访问控制

  1. 前往 控制台 > 应用程序
  2. 打开你想要限制的应用程序。
  3. 切换到 规则 标签页。
  4. 自定义允许规则 中,点击 添加规则
  5. 选择规则类型:
    • 用户
    • 用户角色
    • 组织 (Organizations)
    • 组织角色
  6. 选择应被允许访问该应用的用户、角色、组织或组织角色。
  7. 打开 启用访问控制
  8. 点击 保存更改
important:

你必须在启用访问控制前至少配置一条允许规则。这可以防止意外启用访问控制却没有任何用户可以访问应用。

编辑或移除规则

你可以在应用的 规则 标签页更新允许列表。

  • 若要添加更多规则,点击规则表下方的 添加另一个
  • 若要移除规则,点击规则行上的删除按钮并确认操作。
  • 添加或移除规则后,点击 保存更改 以应用更新。

如果已启用访问控制,Logto 要求至少保留一条规则。若要移除所有规则,请先关闭 启用访问控制,然后保存更改。

规则变更对用户的影响

应用级访问控制不会终止用户的全局 Logto 会话。用户可能仍然登录着 Logto 及其他应用。

对于被限制的应用:

  • 不再匹配任何允许规则的用户,在下次经过该应用授权 (Authorization) 流程时会被拦截。
  • 如果用户已有与应用相关的授权 (Authorization),当应用使用刷新令牌请求新令牌时,Logto 会再次检查规则。如果用户已无访问权限,Logto 会拒绝令牌请求。

这样可以让访问决策与应用绑定,同时避免对无关应用造成不必要的干扰。

与第三方应用权限的关系

对于第三方应用,应用级访问控制和权限管理解决的是不同的问题:

  • 应用级访问控制 决定用户是否被允许登录第三方应用。
  • 权限管理 决定第三方应用在用户授权页面上可以请求哪些用户资料权限 (scopes)、API 资源权限 (scopes) 和组织权限 (scopes)。

如果两者都已配置,用户必须先通过应用级访问控制,才能授权第三方应用。

与受保护应用的关系

对于受保护应用,应用级访问控制限制谁可以通过 Logto 认证 (Authentication) 层并访问受保护的源服务器。

受保护应用的认证 (Authentication) 规则仍然决定哪些路由需要认证 (Authentication)。应用级访问控制决定哪些已认证 (Authentication) 的 Logto 用户可以访问受保护应用。

最佳实践

  • 尽量从用户角色或组织角色规则开始。它们比维护长用户列表更容易管理。
  • 当组织内所有成员都应访问应用时,使用组织规则。
  • 当只有组织内特定成员应访问应用时,使用组织角色规则。
  • 当用户变更角色、加入或离开组织时,及时检查访问规则。
  • 在你的思维模型中,将 RBAC 权限 (Permissions) 和应用级访问控制分开:应用级访问控制回答“这个用户能否访问这个应用?”,而 RBAC 回答“这个用户访问 API 或组织功能后能做什么?”