asp.net-core - 如何从调用使用 .NET Core 3 构建的 API 的 react js 内置网站生成和/或获取 access_token 和 refresh_token?
问题描述
我正在使用调用 RESTful API(使用 .NET Core 3.1 构建)的反应构建 Web 应用程序。Web 应用程序和即将推出的移动应用程序通过 API 访问所有数据。我想集成身份验证/授权,但想知道从哪里开始。我正在考虑使用 IdentityServer4 来构建一个令牌服务,但这可能有点矫枉过正,尤其是安全性不是我的专长。但我也想要一些我可以轻松集成/使用但也不只与一个令牌提供者绑定的东西(例如,仅限 MS)——这将过于严格,因为目标用户可能更喜欢使用用户名/密码,或者他们的谷歌/MS/fb....)。我该怎么办?我应该从哪里开始?
解决方案
好吧,这里是移动部分,并且有相当大的学习曲线,因为 OAuth 技术涵盖了许多架构方面。我的目标是在早期主要关注 UI 和 API 集成。
授权服务器 (AS)
这将处理登录屏幕、基于标准的消息、颁发令牌、审计等。我建议从免费或低成本的云服务开始,这样您就可以快速入门并了解如何管理系统。
蜜蜂
这些将验证传入的访问令牌并构建声明主体。我将首先了解您需要哪些声明以及在验证令牌后如何授权请求。
网页界面
它们使用授权代码流 (PKCE),然后处理和验证 OAuth 响应。一个常用的库是oidc-client,它将为您处理很多复杂性。
移动用户界面
这些使用与上述相同的流程,但使用处理凭据的应用内浏览器。最常用的库是AppAuth,它处理移动管道。
可扩展性
集成上述部分后,您应该能够在不更改任何代码的情况下执行此操作:
- 添加额外的登录方法,如我的联合登录博客文章中所述
- 在您更好地了解您的 AS 要求后切换供应商
在线代码示例
我的博客有一堆UI 和 API 代码示例,您可以在本地 PC 上运行,从Initial Code Sample开始,然后转到更高级的示例,例如带有 .Net Core API 的 React SPA。
推荐阅读
- javascript - 减少 React-Native 图像资产大小
- javascript - 使用循环 javascript 创建选择选项
- asp.net-mvc - 将部分视图 select2 控件值传递给父视图控制器
- python - ValueError:时间数据“无”与格式“%Y-%m-%dT%H:%M:%S.%f”不匹配
- html - 每次都强制浏览器链接到新的 pdf 副本?
- r - 将相同的行号分配给R中另一列中的重复值
- android - RecyclerView 中的项目确实保留在 android 中
- javascript - 使用 JQuery 从数组上的单选按钮获取单个值
- python - Keras 3类图像识别概率输出?
- css - Angular9/Ionic 5 Ion-Split-pane 问题