【发布时间】:2020-04-06 05:03:16
【问题描述】:
我正在构建一个 API,它将使用 Auth0 进行身份验证,并将拥有 Web 和移动客户端。
两个客户端都将使用来自 Auth0 的基于 Web 的登录来获取他们的令牌。
我正在寻找在我的 API 数据库中获取和存储一些用户信息的最佳方式,因此我可以例如列出某个组中的用户,将文章与作者联系起来,为无法存储在 Auth0 中的用户授予一些权限(原因有两个:没有 mtm 令牌,更重要的是,它是一种多租户应用程序,并且权限保持复杂它们在令牌中)。
token 中有 userId 可以使用,但是 e.g.何时触发用户保存/更新?在每个请求上运行它听起来效率不高。
有人做过这样的事吗?
如何以最好的方式处理它?
【问题讨论】:
-
不确定我是否完全理解您想要实现的目标,但您可以订阅 Auth0 auth0.com/docs/hooks/concepts/… 上的注册后挂钩,然后在您的数据库中创建用户。我想你不会使用 Auth0 进行授权,只使用身份验证?
-
确实如此。我的授权是复杂的使用 Auth0
-
那么在您的数据库中存储具有特定于域的元数据的用户就足够了吗?对不起,我不明白问题是什么..
-
您正在寻找“用户帐户配置”:登录时,您使用提供商提供的 UPN 在本地数据库中查找身份。您可以保留外部令牌或向客户端发布新的“本地”令牌。如果用户帐户不存在:创建一个,如果存在,更新它。调用
AddOpenIdConnect时,传递带有Event.OnTokenValidated 回调的选项,您可以在其中进行配置并选择性地转换AuthenticationTicket。 -
当用户使用令牌调用 API 时是否调用它?因为 API 不以任何方式参与登录过程。
标签: c# .net-core asp.net-core-webapi auth0