.net - 在 .NET MVC 中使用带有 oAuth 2.0 的 Workday REST API

标签 .net asp.net-mvc rest api oauth

我尝试在 .NET MVC 应用程序中调用 Workday REST API,但在使用 oAuth 2.0 方面时遇到问题。尽管就我而言,我特别谈论的是 Workday,但我认为我不理解的内容也适用于任何支持 oAuth 2.0 的 API。我正在尝试使用授权代码授予类型。

我对oAuth 2流程的理解如下:

1) 我向 authorize 端点发送 GET 请求

2) 用户必须使用其凭据登录

3) 此时,API 会发送响应,响应中包含授权代码授予

4) 现在我可以发出 POST 请求以将授权代码交换为访问 token

5) 我的响应与访问 token 一起发回

6) 现在我可以自由地使用该访问 token 来发出 GET 请求

从概念上讲,我理解这一点很好,但从技术上讲,我在从步骤 1 移动到步骤 2 时遇到了困难:

我假设我在步骤 1 中从我的服务器发出 GET 请求(因为 CORS 策略不允许它来 self 的前端)。在这种情况下,我注意到从 api 获得的响应是​​ html,上面有登录页面。 那么,将该 html 传递到前端的典型流程是什么,让用户登录,然后继续执行步骤 3。

此外,API 客户端配置中有一个名为 Redirect URL 的字段,我认为 API 将在其中发送带有授权代码授予的响应,并且我还认为应该是一个操作在我的 Controller 上,但如何在我的页面上获取并使用该响应?

我希望这一切都有道理。

我似乎无法理解这一点。

最佳答案

Workday REST API 支持的两个授权流程是:

  • 隐式授予
  • 授予授权码

每个授权流程都可以使用任一类型的访问 token :

  • 不记名 token
  • MAC token

您将使用注册客户端时指定的授权流程和 token 类型(使用 WD 上的注册 API 客户端任务)。

初始授权请求期间,当前用户将看到租户的登录页面(如果尚未登录),并且将获得同意页面,如果首次使用客户端,则要求批准或拒绝访问 Workday 资源。 从那时起,您的 API 客户端将可以访问 Workday 资源,因为拨款将获得批准。您不必重新批准拨款。

基本上,这将是创建授权流程的一次性练习,从那时起,您可以在请求的 header 中使用 token 。

强烈建议您在此处阅读有关 WD Api oAuth 的完整文档 https://community.workday.com/rest/oauth

关于重定向 uri,您可以在此处阅读更多内容,了解它是什么以及为什么它是必要的 https://www.rfc-editor.org/rfc/rfc6749#section-3.1

关于.net - 在 .NET MVC 中使用带有 oAuth 2.0 的 Workday REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43415944/

相关文章:

json - 在 VBA 中发送 JSON POST 请求

rest - 在 Laravel 4 中向内部请求添加 header

rest - 使用 AAD 在 Application Insights REST API 上进行身份验证

.net - Azure 函数发布失败错误消息

c# - 绘图应用程序使用哪种设计模式

c# - 就地更改值而不是创建新实例

jquery - 如何在回发后保持下拉列表选定的值?

c# - WCF 项目试图在数据库已经存在时重新创建它

.net - asmx 服务可以不返回任何内容而不是 null 吗?

asp.net-mvc - Backbonejs 更新模型并将 idAttribute 设置为 Id