我的 Auth0 API 应该拥有哪些权限来处理登录和注册?

时间:2021-07-19 19:47:15

标签: authentication auth0

我正在通过 following documentation 设置 Auth0。文档相当简单。但是,我有点怀疑它没有提到在 Auth0 中设置 API 时需要哪些权限(如果有)。它也没有明确说明不需要任何配置。

另一方面,关于设置 Identifier 的一般政策是什么? Auth0 说他们不会调用端点,但我猜我将不得不在某个时候使用 API?在 Auth0 中为您的 API 提供 Identifier 时,您采用了什么方法?

1 个答案:

答案 0 :(得分:1)

我先从你问题的最后一部分开始。

应用标识符:或“受众”。乍一看确实很奇怪,但它确实可以是您设置的任何内容。 Auth0 和 JWT 的 RFC 都推荐了 URL(请参阅 https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3)。这个值真的是为了匹配 - 或验证 - 目的。验证在哪里匹配? Auth0 在它提供给 Web 应用程序的 JWT 中对其进行编码 -> 将其添加到传递给后端的 Auth 令牌中 -> 后端检查 Bearer / Auth 令牌中的“aud”是否与常量“aud”匹配您已设置(即 const authConfig)。

另外,如 this Auth0 文章中所述(在这种情况下是关于 Angular,但它适用于所有情况):

<块引用>

Auth0 使用受众属性的值来确定用户授权您的 Angular 应用程序访问哪个资源服务器 (API)。

所以它确实根据“aud”进行匹配。它不会通过 GET 或 POST 调用。

您的应用使用“aud”来告诉 Auth0 它必须使用哪个 API。
Auth0 在它发送到应用程序的 JWT 中包含“aud”。
您的后端会验证“aud”以确保它确实收到了为其指定的令牌。

权限:scopes。如果您使用的是 Auth0 SDK(我确定您是),那么很有可能会自动为您请求 OIDC 范围。请参阅此article

<块引用>

当您不将范围属性传递给 tokenOptions 时,Angular SDK 默认为 OpenID Connect Scopes: openid profile email。

因此,如果您只对基本用户信息感兴趣,Auth0 已为您排序。

但是,更进一步,在您的 API 下指定的权限是自定义声明。简而言之,Auth0 将在发送到经过身份验证的前端的 JWT 令牌中包含这些权限。当前端将 JWT 身份验证令牌传递给您的后端时,您的后端将检查存在哪些自定义范围。如果存在所需的范围 - 您的后端将执行所需的受保护端点。
此 Auth0 article 中很好地体现了这样一个事实:权限确实与基于角色的访问控制 (RBAC) 配合得很好:创建API 权限并将它们捆绑到角色 >创建规则,以便在用户登录时添加角色 > 指定哪些用户获得哪些角色

相关问题