我们有一个由 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代码以前只在标头中查找访问令牌;我将其更改为在请求表单()中查找授权代码请求。Authorization
IOwinRequest.ReadFormAsync
OAuth 代码现在向成功的授权代码请求发送重定向响应,而不是使用重定向 URI 发送 JSON 响应。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消