云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库_中国企业邮箱_三重好礼

小七 141 0

RBAC授权系列-第2部分:使用RBAC规则保护httpapi了解如何使用Auth0的基于角色的访问控制(RBAC)功能轻松保护httpapi。

编者按:这是关于授权的3部分系列文章中的第二篇技术文章。请继续关注本系列的最后一部分,重点介绍动态授权。DR:在本文中,您将了解如何利用Auth0的RBAC(基于角色的访问控制)功能来处理api中的最终用户授权。本文将首先提出一个简单的场景,在这个场景中,您可以使用RBAC来保护API端点;然后,它将展示如何在Auth0仪表板中映射该场景,以及如何在节点.js和Express API。虽然这里显示的示例使用了这种特定的技术组合(节点.js您将看到该解决方案易于实现,并且您可以将其转换为您可能正在使用的任何其他平台。重要提示:本文利用了目前正在beta测试中的Groups特性。若要访问此功能,请按照授权组公告的新Beta程序中的说明进行操作。"了解RBAC如何帮助您轻松管理用户权限。"在推特上留言什么是RBAC(基于角色的访问控制)?介绍基于角色的访问控制(RBAC)是指根据用户在组织中的角色向其分配权限的思想。这种方法提供了细粒度的控制,并提供了一种简单易管理的访问管理方法,与单独向用户分配权限相比,这种方法更不容易出错。使用RBAC时,您将分析用户的系统需求,并根据常见的职责和需求将他们分组到角色中。然后为每个用户分配一个或多个角色,并为每个角色分配一个或多个权限。用户角色和角色权限关系使执行用户分配变得简单,因为用户不再需要单独管理,而是拥有与分配给其角色的权限相一致的权限。RBAC场景现在您已经知道RBAC代表什么并对其工作原理有了一个抽象的概念,现在是时候将这种授权策略放在更现实的环境中了。在本文中,您将处理一家名为TroubleShoo的公司的虚拟场景。这家公司,和其他公司一样,有一个特别小组,分为两类合作者:雇员和承包商。员工是公司直接雇佣的合作者,他们有带薪休假和薪水等福利。另一方面,承包商没有带薪休假,也没有薪水,所以他们必须向公司提交发票。考虑到这个场景,您将使用RBAC概念来映射两个角色:假期请求者:具有此角色的用户将有权访问允许他们申请假期的工具。发票提交者:具有此角色的用户将有权访问一个工具,他们可以在其中发送发票。然后,您将把第一个角色("休假申请者")分配给公司员工,第二个角色("发票提交者")分配给承包商。除此之外,为了给场景添加一些趣味,您将创建另一个角色,您将同时为员工和承包商提供:费用提交者:具有此角色的用户将有权访问允许他们提交费用的工具。您将在本文中了解到的另一个有趣的特性是"组"特性。尽管您可以使用纯RBAC并将角色直接分配给用户,但是您将使用一种更好的策略,即定义组来充当用户和角色之间的中介。也就是说,不直接将角色分配给用户,而是将角色分配给组,将用户分配给组。当你开始拥有几十个角色和用户时,在角色之上设置组是非常有帮助的。例如,假设您有100名员工,您需要为他们分配一个新角色。如果您有一个员工组,则无需更新每个用户,您可以将新角色分配给该组,然后用户将自动继承它。那么,回到TroubleShoo场景,您将看到Employees组和Contractors组。然后您将按如下方式使用这些组:员工:此组将具有休假请求者和费用提交者角色承包商:此组将具有费用提交者和发票提交者角色通过拥有这些组,您可以将用户直接分配给它们,这将使用户管理任务更轻松。这将使您了解如何利用RBAC和组来帮助您进行授权过程。应用程序、API和RBAC如前所述,要学习如何在应用程序中处理RBAC规则,您将使用节点.js和Express来运行表示用户可以使用的资源的API。但是,下面的部分将要求您从GitHub克隆一个初学者项目,而不是让您花时间从头创建expressapi。这将允许您只关注本教程中重要的代码。另外,为了使整个练习更加真实,您将使用部署在云端的应用程序来使用这些api,而不是要求您通过某个HTTP客户端测试api和RBAC规则。使用此应用程序将使整个文章更容易流动。总之,这是本文结尾部分的内容:A节点.js和Express应用程序,该应用程序公开与之前显示的角色相关的端点(即,用户将能够管理假期、发票和费用的端点)。访问部署在云上的SPA应用程序以使用这些端点。使用上一节介绍的组和角色配置的Auth0帐户。使用Auth0映射RBAC场景在了解了将要处理的场景之后,可以直接在Auth0上映射它。如果您还没有免费的Auth0帐户,现在是创建一个好时机。创建它(或登录到现有仪表板)后,打开Auth0仪表板并搜索api部分。在这里,您需要创建三个不同的API:假期API、费用API和Invoice API。要开始映射这些API,请单击Create API并填充对话框,如下所示:Name:"假期API"标识符:https://vacation-api.troubleshoo.com然后,单击Create按钮并转到新API的Permissions选项卡。您将拥有两个创建权限:创建:假期:使用"创建假期请求"作为说明阅读:假期:使用"阅读假期请求"作为描述完成后,移动到Settings选项卡并启用"EnableRBAC"和"AddPermissionsintheaccesstoken"选项;然后,点击Save按钮来保存更改。您需要打开这些选项,以便在节点.js和快速端点。注意:您的api将通过Auth0在应用程序中进行身份验证时生成的访问令牌来获取有关用户的信息。如果您想了解有关此过程的更多信息,请参阅我们最近发布的"学习身份"课程。现在,重复整个API创建过程来创建其他API。可以使用以下数据创建其他两个:费用APIName:"费用API"标识符:https://expense-api.troubleshoo.com创建:开支:"创建开支报告"阅读:开支:"阅读开支报告"发票APIName:"发票API"标识符:https://invoice-api.troubleshoo.com创建:发票:"创建发票报告"阅读:发票:"阅读发票报告"另外,确保在这两个api上都启用了"enablebac"和"Add permissionsintheaccesstoken"。创建完这些api之后,转到Roles部分创建本练习所需的三个角色。要开始,请单击"创建角色"并使用以下信息填充对话框:Name:"休假申请者"Description:"授予用户请求假期权限的角色"然后,单击"创建"后,转到"权限"选项卡并单击"添加权限"。当Auth0向您显示新对话框时,请在下拉列表中选择"休假API",然后选择两个显示的权限。然后,单击addpermissions以完成该过程。在创建了一个角色后,还有两个角色要去。要创建这些其他角色,请使用以下信息重复上述步骤:费用提交人:Name:"费用提交人"Description:"授予用户创建开支报告权限的角色"API:"费用API"权限:创建:开支和阅读:开支发票提交人:Name:"发票提交人"Description:"授予用户提交发票权限的角色"API:"发票API"权限:创建:发票和阅读:发票完成此过程后,可以转到仪表板的"组"部分,以创建"员工"和"承包商"组。到达后,单击Create Group并按如下方式填充对话框:姓名:"员工"Description:"内部员工"Connection:"用户名密码验证"注意:如果您使用的是一个全新的Auth0帐户,您肯定会有"用户名密码验证"连接。此连接引用Auth0为您运行的用户数据库,以保存使用用户名和密码注册的用户的数据。如果您使用的是现有帐户,此连接可能不再存在,其他连接可能可用。在本例中,您可以转到"DatabaseConnections"并为本练习创建"Username Password Authentication"。创建新组后,单击Roles选项卡,并为其分配"假期请求者"和"费用提交者"角色。然后,重复"创建承包商组:名称:"承包商"说明:"外部劳动力"Connection:"用户名密码验证"角色:"费用提交人"和"发票提交人"创建完这些组后,下一步要做的就是创建一些用户来测试整个过程。为此,请转到Users,单击createuser,然后创建一个coup