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 +------------------+
带有 client_id 和 client_secret 的令牌请求
令牌响应:带有 access_token 的 json
标题为“Authorization: Bearer”的服务请求
服务响应一如既往。
令牌请求通常采用以下格式:
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 在这里是函数,而不是文字字符串。
TA贡献1810条经验 获得超5个赞
我赞成这个问题和海龟的回答。我认为任何像我一样查过这个问题的人也会从中受益:
https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use
有不同的流量。在代码之前在方框/握手图中考虑它们。
添加回答
举报