我尝试在 .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/