.net-core - 如何在 ServiceStack 中实现 Auth0 认证?
问题描述
我的设置由 3 个组件组成:
Auth0,我在其中添加用户并管理他们的权限。
我的前端 SPA 网页,用作我的 API 的外壳。
我的 API,使用 ServiceStack 制作。
这是身份验证流程,正如我想象的那样:
用户在客户端应用程序中单击“使用 Auth0 登录”。
然后用户被重定向到 Auth0,他在此处登录并接收 JWT。
此 JWT 存储在客户端上,并添加到我的 API 的每个请求中。
我的 API (ServiceStack) 通过检查它是否与 Auth0 给我的证书匹配来验证 JWT。
我的 API (ServiceStack) 检查用户是否具有所需的权限,由 Auth0 管理并包含在 JWT 中。
理想情况下,这应该像向服务添加 [Authorize] 和 [RequiredPermission] 标记以配置访问哪些服务所需的权限一样简单。
我尝试以许多不同的方式实现这一点,但我开始认为我的整个方法存在缺陷,因此很难添加任何代码片段来说明问题。我是从根本上误解了某些东西,还是应该可以在 ServiceStack 中设置这些东西?我可以使用http://jwt.io/从 Auth0 获取并验证 JWT 是否正确,问题只是将此验证集成到 ServiceStack 中。
解决方案
Auto0 发布了许多关于与 ServiceStack 集成的文档和文章:
- https://auth0.com/docs/quickstart/webapp/servicestack/01-login
- https://auth0.com/authenticate/servicestack/auth0-oidc/
- https://auth0.com/authenticate/servicestack/oauth2/
对于 JWT 集成,我在以下位置找到了一个自定义 OAuth0 提供程序:
或者在与 Auth0 OAuth Provider 集成时查看此答案
推荐阅读
- angular - 无法在 Ubuntu 上运行 Angular 2 项目
- google-cloud-speech - Google Cloud Speech Async Streaming GRPC 隧道被 Google 关闭
- nservicebus - MessageBus:等待处理完成并向请求者发送ACK
- c++ - const 对象中的指针在传递给另一个对象构造函数后正在发生变化
- jquery - 重新加载页面但不添加到历史堆栈
- c++ - 了解 sigwait() 以及它如何设置参数
- fortran - 如何使用 armflang 设置目标 CPU/硬件?
- angular - Angular 和 Firebase:如何使用电子邮件地址检索用户的 UID?
- hiveql - 在 HIVE 查询中传递参数
- javascript - 使用 Javascript 影响多行以 substr 和复制的函数