gpt4 book ai didi

c# - 单页应用如何实现OAuth 2.0授权码授权?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:26 25 4
gpt4 key购买 nike

我们有一个由使用 OAuth 2.0 的 ASP.NET Web API 支持的 Angular SPA Resource Owner Password Credentials Grant使用 Bearer Token 进行授权。 API 使用 Microsoft.Owin.Security.OAuth 来实现 OAuth。

我们正在尝试与将使用 Authorization Code Grant 的第三方应用程序集成因此用户可以授权它代表他们访问我们的应用程序。

我们希望授权页面成为 SPA 的一部分,但我无法弄清楚如何将授权请求从 SPA 提交到 API 并将其重定向回第三方应用程序。

我尝试过同时使用 AJAX(与 SPA 中的所有其他 API 请求一样)和常规 HTML 表单(以便重定向响应重定向页面)。

我们最初是从 API 发回 JSON 响应并让 SPA 自己进行重定向,但如果出现错误,OWIN 会自动发送重定向响应;所以似乎没有任何方法可以避免重定向响应。

如果我通过 AJAX 发送请求,浏览器将通过发送另一个 AJAX 请求而不是重定向页面来自动遵循服务器发送的重定向响应。

如果我使用常规的 HTML 表单发送请求,似乎没有任何方法可以使用 Bearer Token 发送所需的 Authorization header 。

最佳答案

我最终使用了 HTML 表单并在表单正文中发送了当前访问 token 。我在表单中为访问 token 创建了一个隐藏输入,并且仅在提交表单时设置它的值(以减少它被用户或恶意脚本/扩展程序看到的可能性)。

在服务器端,我们的 OAuth 代码以前只在 Authorization header 中寻找访问 token ;我将其更改为也在请求表单 (IOwinRequest.ReadFormAsync) 中查找授权代码请求。

OAuth 代码现在向成功的授权代码请求发送重定向响应,而不是发送带有重定向 URI 的 JSON 响应。

关于c# - 单页应用如何实现OAuth 2.0授权码授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54471642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com