阅读时间: 4 分钟
厌倦了为每一个想要访问你的特定服务的新用户手动登录到auth0添加角色。并通过附加角色给予其访问服务的权限。你是否在寻找一种更好的方法。例如,当一个特定组织的所有有效用户登录时,一个角色会自动附加到他们身上。那么你就来对地方了。在这篇博客中,我将向你解释如何使用Auth pipelines Rules实现同样的目的。
请确保创建了一个用户和一个角色。
在Auth0中创建一个用户和一个角色是非常简单的。为了供你参考,我附上了我的博客链接,其中我详细解释了如何在Auth0中创建一个用户和一个角色。在你创建了一个用户后,你可以滚动浏览一堆可用的部分。导航到细节部分,到权限部分和角色部分。
正如你所看到的,目前没有给用户分配任何角色,这将在我们要写的规则被执行后自动分配。
同样地,我们创建了一个名为Test-Role的角色。这个角色目前只有一个权限,并且正在使用名为Demo-API的API,这是我们自定义的API,我们只为这个演示目的而创建。目前没有用户被分配到这个角色。
现在让我们转到博客的主要话题,即规则。
创建一个授权管线规则。
在创建我们的第一个规则之前,让我们首先讨论一下什么是真正的规则。规则不过是用javascript编写的代码片段,在Auth0服务器上运行。我们可以根据我们的要求来定制它们。
把它看成是一个传递三个参数的函数。第一个参数是来自身份提供者的用户对象,第二个参数是包含当前登录尝试信息的上下文对象(从哪个设备登录,用户试图登录哪个应用程序),最后一个是必须在规则中调用的回调函数,以表示成功或错误。Auth0提供了简单的方法来定制登录过程,我们称之为规则。
要创建一个新的规则,点击创建规则按钮。这将带我们到一个页面,在那里我们可以找到一些选项,我们可以根据我们的需要来创建一个规则,并进行定制。我们可以选择一个空的规则,让我们从头开始建立一个规则,或者可以从现有的模板中选择。
让我们选择空的规则作为我们的示范,因为我们将编写我们的定制规则。
这个模板有一个if条件,它通过检查电子邮件终端来检查用户是否是一个有效的用户,然后有一个分配给变量assignRoletoUser的函数,它接收登录用户的User-id和我们想要附加的角色的role-id,并将该角色分配给该特定用户。我们可以在这里给出一个数组格式的角色列表,所有的角色都将以同样的方式被附加。在结尾处,还有一个try-catch函数,用于捕捉任何错误,以防发生。
角色被自动连接。
现在,当我这次尝试登录到服务时,我可以看到我可以访问我的角色中提到的权限。看看Auth0用户,我们可以发现角色被动态地附加到这个特定的用户,而不需要我做任何事情。即使我删除了这个角色,当我再次登录时,它也会再次被附加。
通过这种方式,你可以减轻你的努力,将角色附加到你的组织中的每一个新用户。
参考资料:
链接到我关于如何创建一个API、一个用户和一个角色的博客:https://blog.knoldus.com/creating-auth0-api-user-role/