为了账号安全,请及时绑定邮箱和手机立即绑定

使用 oauth2 的程序化身份验证

使用 oauth2 的程序化身份验证

12345678_0001 2023-03-31 10:04:09
我们使用一些组织的 API 有一段时间了,但现在他们开始使用 OAuth2 进行身份验证。他们的 API 完全由我们的应用程序以编程方式使用。所以现在我们必须使用 OAuth2 进行身份验证,以便我们可以再次使用他们的 API。我对这个认证过程有点困惑。有没有一种方法可以通过编程方式使用 OAuth 进行身份验证?它说,在继续进行身份验证之前,将要求用户进行身份验证时登录,如何仅通过代码实现这种登录?或者您是否需要先使用浏览器进行身份验证,然后使用访问令牌来处理来自应用程序的进一步请求。这种场景下OAuth2认证的典型流程是什么?编辑:只有一个用户是我们的应用程序用于访问其数据的帐户。该用户在其端注册为 API 的使用者。
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您混淆了不同的 OAuth 流程。用户进行身份验证的流程通常是 authorization_code 流程,而您要使用的流程应该是 client_credentials 流程。


让我们将您的应用程序称为“A”,将您使用其服务的组织称为“B”。


在 client_credentials 流程中,A 会将他的 client_id 和 client_secret 发送给 B 的授权服务器。该服务器将返回一个访问令牌,您现在可以使用它来调用 B 的资源服务器(服务本身)。


+---------------+          +------------------+

| Application A |    1     | Authorization    |

|               +----------+ serveur          |

+---------------+    2     +------------------+




+---------------+          +------------------+

| Application A |    3     |Resource Server   |

|               +----------+                  |

+---------------+    4     +------------------+

  1. 带有 client_id 和 client_secret 的令牌请求

  2. 令牌响应:带有 access_token 的 json

  3. 标题为“Authorization: Bearer”的服务请求

  4. 服务响应一如既往。

令牌请求通常采用以下格式:

POST /token HTTP/1.1

Host: authorization-server.com


grant_type=client_credentials

&client_id=xxxxxxxxxx

&client_secret=xxxxxxxxxx 

但有些人可能会选择强制执行其他选项:在授权标头中传递客户端信息:


POST /token HTTP/1.1

Host: authorization-server.com

Authorization: Basic base64(client_id:client_secret)


grant_type=client_credentials

Base64 在这里是函数,而不是文字字符串。


查看完整回答
反对 回复 2023-03-31
?
森栏

TA贡献1810条经验 获得超5个赞

我赞成这个问题和海龟的回答。我认为任何像我一样查过这个问题的人也会从中受益:

https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use

有不同的流量。在代码之前在方框/握手图中考虑它们。


查看完整回答
反对 回复 2023-03-31
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信