为了账号安全,请及时绑定邮箱和手机立即绑定

如何从单页应用程序实现OAuth 2.0授权码授权?

如何从单页应用程序实现OAuth 2.0授权码授权?

C#
慕码人8056858 2022-08-20 15:25:21
我们有一个由 ASP.NET Web API 支持的 Angular SPA,该 API 使用 OAuth 2.0 资源所有者密码凭据授予和持有者令牌进行授权。该 API 使用 Microsoft.Owin.Security.OAuth 来实现 OAuth。我们正在尝试与将使用授权代码授予的第三方应用程序集成,以便用户可以授权它代表他们访问我们的应用程序。我们希望授权页面成为SPA的一部分,但我很难弄清楚如何将授权请求从SPA提交到API并将其重定向回第三方应用程序。我尝试同时使用AJAX(就像SPA中的所有其他API请求一样)和常规HTML表单(以便重定向响应重定向页面)。我们最初从API发回JSON响应,并让SPA自己进行重定向,但如果出现某些错误,OWIN将自动发送重定向响应;因此,似乎没有任何方法可以避免重定向响应。如果我通过AJAX发送请求,浏览器将通过发送另一个AJAX请求而不是重定向页面来自动跟踪服务器发送的重定向响应。如果我使用常规的HTML表单发送请求,则似乎没有任何方法可以使用持有者令牌发送所需的标头。Authorization
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

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

在服务器端,我们的OAuth代码以前只在标头中查找访问令牌;我将其更改为在请求表单()中查找授权代码请求。AuthorizationIOwinRequest.ReadFormAsync

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


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信