我在 ASP.NET 中创建了一个 Web API,它充当 SQL Server 数据库中报告数据的入口点。该服务有一个“令牌”端点,它通过 ASP 身份验证用户并返回 20 分钟访问和 2 周刷新令牌。
此 API 只能通过我们自己的应用程序和产品访问。我们将编写一个 Android 应用程序、iOS 应用程序和 ASP.NET Web 应用程序,它们将通过上述 Web API 进行身份验证并从中获取数据。我将负责 ASP.NET 客户端 Web 应用程序和 API。我们正在内部构建这些应用程序,供我们的客户登录和使用。我公司以外的任何第三方都不会通过他们自己的任何应用程序调用我们的 API。
对于我的客户端 ASP.NET Web 应用程序,我在 ASP.NET MVC 中编写它,它现在还没有真正的数据库,因为它与 API 进行通信。
我已经开始以此为基础,并且它可以工作......但现在我需要将此 HTML 文件转换为 MVC 中的 ASP.NET Web 应用程序,并找出存储访问令牌和刷新令牌的位置和方式。http://blog.rfaisal.com/2014/01/14/building-your-own-api-and-securing-it-with-oauth-2-0-in-asp-net-webapi-2 /
我的问题是:
我知道我需要在后续调用 API 中传递访问令牌来执行 CRUD 操作。登录时,我应该在哪里发出我的 Web 请求以验证 Web 应用程序上的用户......从后面的 C# 代码或 JavaScript 中引用的教程?我问是因为我意识到在我的 JS Ajax 调用中我需要访问令牌,但我听说刷新令牌需要更“安全”,并且从服务器代码调用可能会给我更安全的选项这样做??
我在哪里存储访问令牌?在 JavaScript 或服务器中创建的 cookie 中?在 JavaScript 本地存储中?在我可以传递给 JavaScript 的会话变量中,也许?
我在哪里存储刷新令牌?在访问令牌即将到期之前,我需要它来更新它。我已经用谷歌搜索了这个,但找不到一个好的 ASP.NET 在线解决方案,它可以从我的消费网络应用程序的角度告诉我在哪里或如何存储它。从服务器创建的 cookie,保存在 Web 应用程序使用的 SQL DB 中,在会话变量中?
我迫切需要帮助,这让我发疯,让我夜不能寐。希望有人能提供一个完整、简单的例子,并充分描述我需要做什么。