首页 > 解决方案 > OAUTH - 实施授权代码工作流程

问题描述

我已经实现了 oauth 工作流程来获取访问和刷新令牌。OAuthAuthorizationServerProvider 和 AuthenticationTokenProvider 的自定义类已就位且正在工作。

我正在尝试添加单点登录功能(通过我们的系统提供对第三方的访问权限),但我不确定应该如何完成,或者我是否遗漏了一些内容。

这是我想实现的工作流程:

  1. 第三方调用 /api/Account/ExternalLogin
  2. 用户获得一个登录页面,他们在其中输入凭据
  3. 通过 /token 调用验证用户(就像他们试图获取访问令牌一样)
  4. 第三方使用authorization_code调用/token获取access_token

我在第 3 步和第 4 步之间遗漏了一些东西。当您验证用户时,您会获得一个 access_token,但您应该使用授权代码将用户重定向到第 3 方 url,以便第 3 方系统可以获得 access_token。那是我不明白的。

标签: asp.net-mvc

解决方案


好的,所以工作流程是这样的(如果我没记错的话!):

客户端将需要您进行某种设置,因为您需要知道将授权代码发送到哪个 URL。

用户进入您的授权页面并输入他们的用户名/密码。如果一切顺利,您将发出授权代码并将用户重定向回他们的 URL,并在 URL 中传递代码。

此客户端 URL 可能如下所示: https://www.client.co.uk/authcode_endpoint?code=blah

至此,您的工作已经完成。

接下来,客户端将在他们的系统上收到此代码(因为您调用了他们的 URL)并且现在可以向您发出另一个调用,以将代码交换为令牌,然后重复该过程。

您将它们发送回另一个 URL:https://www.client.co.uk/authtoken_endpoint?token=blah

现在他们可以发出更多的呼叫来做他们需要做的事情。

像这样的事情应该很简单,基本上你有一个应用程序到应用程序的通信。必须有已经为您提供这种工作流程的库。


推荐阅读