首页 > 解决方案 > 如何在.net核心中创建由Auth0验证的自己的访问令牌

问题描述

我有一个现有的系统并想使用Auth0(仍在考虑)。

语境:

我有自己的登录屏幕,每个客户都非常动态(白标)。所以我不想使用 Auth0 登录屏幕。

我有自己的用户和租户数据库,所以暂时不想使用 Auth0 用户数据库。

所以想法是在我的后端登录后验证用户凭据并创建访问令牌以返回客户端。

我希望该访问令牌由 Auth0 验证。

问题:

1)可能是最重要的问题。应该使用 Auth0 或者只使用原生 jwt

2)有没有办法可以在我的后端创建一个有效的访问令牌,可以通过 Auth0 验证。

堆:

我使用 vue.js 作为我的前端 SPA。

我使用.net core 作为我的后端。

标签: asp.net-coreauth0

解决方案


可能是最重要的问题。应该使用 Auth0 或者只使用原生 jwt

这取决于您是否要启用在线身份提供商的功能,例如 Single Sign-On 。如果没有,请继续使用当前的,因为您不需要 Auth0 用户数据库。

有没有办法可以在我的后端创建一个有效的访问令牌,可以通过 Auth0 验证。

由于您的场景是在前端应用程序中收集用户名和密码,并传递给后端 .net 应用程序以验证凭据并创建令牌。您可以在 Auth0 中实施资源所有者密码授予来创建访问令牌以访问受 Auth0 保护的资源,但如文档所示:

只有在以下情况适用时,您才应使用此流程:

  • 该应用程序绝对信任用户的凭据。对于单页应用和原生/移动应用,我们建议改用 Web 流。
  • 无法使用基于重定向的流程。如果不是这种情况,并且在您的应用程序中可以进行重定向,则应改用授权代码流。

因此不建议在您的场景中使用它。如果你需要 SSO 之类的功能并想使用 Auth0 ,建议直接在 vue 应用中使用 Auth0 来管理你的用户和角色:

https://auth0.com/docs/quickstart/spa/vuejs/01-login

使用Auth0登录后,可以根据需要将用户映射到本地数据库用户进行具体管理。

另一种方法是使用Client Credential flow。对于这种情况,用户名 + 密码或社交登录等典型身份验证方案没有意义。相反,M2M 应用程序使用客户端凭据流,您的后端应用程序将验证和授权应用程序而不是用户。如果您想获取特定用户访问受保护资源的访问令牌,则不适合。


推荐阅读