常见用例
在本节中,我们将提供一些示例,帮助你理解一些场景中 自定义令牌声明 的用处,为你提供一些参考。这样,当你在访问管理中遇到困 难时,可以评估自定义令牌声明是否能为你带来便利。
实现基于属性的访问控制 (ABAC)
基于属性的访问控制 (ABAC) 是一种使用属性(如用户角色、资源属性和环境条件)来做出访问控制决策的访问控制模型。这是一种灵活且动态的方式来管理对受保护资源的访问。
假设你正在构建一个应用程序,该应用程序的发布分为两个阶段:公开测试版和正式发布。即使在应用程序正式发布后,你也希望参与公开测试版的老用户继续使用付费功能。
在应用程序正式发布后,你可以使用 Logto 的 基于角色的访问控制 (RBAC) 功能来实现对付费功能使用的访问控制。为了轻松检查用户是否在公开测试阶段已经使用该应用程序,你可以使用 getCustomJwtClaims()
方法在令牌负载中添加一个声明 createdAt
。
然后,在你的受保护 API 中进行访问控制时,你需要允许满足以下任一条件的访问令牌:
- 在 RBAC 上下文中,具有访问付费资源的权限。
createdAt
早于公开测试阶段的结束时间。
如果没有自定义令牌声明功能,在验证 受保护 API 资源 的权限时,需要调用 Logto Management API 来检查当前访问令牌的用户是否具有某个 API 资源所需角色对应的权限。
在类似的场景中,假设你的应用程序在登录页面上显示生日祝福,如果用户的生日临近。你可以使用自定义令牌声明在 令牌负载 中添加一个生日字段,用于确定是否显示特定消息。