asp.net-mvc - OAUTH - 实施授权代码工作流程
问题描述
我已经实现了 oauth 工作流程来获取访问和刷新令牌。OAuthAuthorizationServerProvider 和 AuthenticationTokenProvider 的自定义类已就位且正在工作。
我正在尝试添加单点登录功能(通过我们的系统提供对第三方的访问权限),但我不确定应该如何完成,或者我是否遗漏了一些内容。
这是我想实现的工作流程:
- 第三方调用 /api/Account/ExternalLogin
- 用户获得一个登录页面,他们在其中输入凭据
- 通过 /token 调用验证用户(就像他们试图获取访问令牌一样)
- 第三方使用authorization_code调用/token获取access_token
我在第 3 步和第 4 步之间遗漏了一些东西。当您验证用户时,您会获得一个 access_token,但您应该使用授权代码将用户重定向到第 3 方 url,以便第 3 方系统可以获得 access_token。那是我不明白的。
解决方案
好的,所以工作流程是这样的(如果我没记错的话!):
客户端将需要您进行某种设置,因为您需要知道将授权代码发送到哪个 URL。
用户进入您的授权页面并输入他们的用户名/密码。如果一切顺利,您将发出授权代码并将用户重定向回他们的 URL,并在 URL 中传递代码。
此客户端 URL 可能如下所示: https://www.client.co.uk/authcode_endpoint?code=blah
至此,您的工作已经完成。
接下来,客户端将在他们的系统上收到此代码(因为您调用了他们的 URL)并且现在可以向您发出另一个调用,以将代码交换为令牌,然后重复该过程。
您将它们发送回另一个 URL:https://www.client.co.uk/authtoken_endpoint?token=blah
现在他们可以发出更多的呼叫来做他们需要做的事情。
像这样的事情应该很简单,基本上你有一个应用程序到应用程序的通信。必须有已经为您提供这种工作流程的库。
推荐阅读
- python - 我如何安排 tweepy 脚本每小时运行一次?
- node.js - 'this' 隐含类型为 'any' 因为它没有类型 annotation.ts(2683)
- discord - 如何添加 if 子句,例如 if(某些条件),然后添加 .addField?
- javascript - 使用 Java 脚本多次获取 Web 表单中的条目
- ignite - Apache Ignite 中是否有任何功能,我们可以从客户端传递表达式以在集群内执行
- javascript - 令牌认证 - JWT
- image - 如何在 QT 中的 QgraphicsView 中保持图像原始
- azure - 创建从 6:00 到 20:00 运行的 ADF 计划
- amazon-web-services - AWS API Gateway 将请求转发到带有私有证书的 HTTPS 服务器
- r - R - 防止聚合函数将日期时区转换为本地时间?