使用 oauth2 的程序化身份验证
Programmatic authentication with oauth2
我们已经使用一些组织的 API 一段时间了,但现在他们开始使用 OAuth2 进行身份验证。它们的 API 完全由我们的应用程序以编程方式使用。所以现在我们必须使用 OAuth2 进行身份验证,以便我们可以再次使用他们的 API。
我对这个身份验证过程有点困惑。有没有一种方法可以通过编程方式使用 OAuth 进行身份验证?它说,在继续进行身份验证之前,将要求用户进行身份验证时登录,如何仅通过代码实现这种登录?或者您是否需要先使用浏览器进行身份验证,然后使用访问令牌来处理来自应用程序的进一步请求。这种场景下OAuth2认证的典型流程是什么?
编辑:只有一个用户是我们的应用程序用于访问其数据的帐户。该用户最终注册为 API.
的消费者
您混淆了不同的 OAuth 流程。用户验证的流程通常是 authorization_code 流程,而您要使用的流程应该是 client_credentials 流程。
让我们将您的应用程序称为 'A' 以及您正在使用其服务的组织 'B'。
在client_credentials流程中,A将他的client_id和client_secret发送给B的授权服务器。该服务器将 return 一个访问令牌,您现在可以使用它来调用 B 的资源服务器(服务本身)。
+---------------+ +------------------+
| Application A | 1 | Authorization |
| +----------+ serveur |
+---------------+ 2 +------------------+
+---------------+ +------------------+
| Application A | 3 |Resource Server |
| +----------+ |
+---------------+ 4 +------------------+
- 令牌请求 client_id 和 client_secret
- 令牌响应:json 带有 access_token
- 服务请求 header "Authorization: Bearer "
- 服务响应如常。
令牌请求通常采用以下格式:
POST /token HTTP/1.1
Host: authorization-server.com
grant_type=client_credentials
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx
但有些人可能会选择强制执行其他选项:在授权中传递客户端信息 header:
POST /token HTTP/1.1
Host: authorization-server.com
Authorization: Basic base64(client_id:client_secret)
grant_type=client_credentials
Base64 在这里是函数,不是文字字符串。
我对问题和 Turtle 的回答都投了赞成票。我想任何像我一样查过这个问题的人也会从中受益:
https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use
有不同的流程。在代码之前在方框/握手图中考虑它们。
我们已经使用一些组织的 API 一段时间了,但现在他们开始使用 OAuth2 进行身份验证。它们的 API 完全由我们的应用程序以编程方式使用。所以现在我们必须使用 OAuth2 进行身份验证,以便我们可以再次使用他们的 API。
我对这个身份验证过程有点困惑。有没有一种方法可以通过编程方式使用 OAuth 进行身份验证?它说,在继续进行身份验证之前,将要求用户进行身份验证时登录,如何仅通过代码实现这种登录?或者您是否需要先使用浏览器进行身份验证,然后使用访问令牌来处理来自应用程序的进一步请求。这种场景下OAuth2认证的典型流程是什么?
编辑:只有一个用户是我们的应用程序用于访问其数据的帐户。该用户最终注册为 API.
的消费者您混淆了不同的 OAuth 流程。用户验证的流程通常是 authorization_code 流程,而您要使用的流程应该是 client_credentials 流程。
让我们将您的应用程序称为 'A' 以及您正在使用其服务的组织 'B'。
在client_credentials流程中,A将他的client_id和client_secret发送给B的授权服务器。该服务器将 return 一个访问令牌,您现在可以使用它来调用 B 的资源服务器(服务本身)。
+---------------+ +------------------+
| Application A | 1 | Authorization |
| +----------+ serveur |
+---------------+ 2 +------------------+
+---------------+ +------------------+
| Application A | 3 |Resource Server |
| +----------+ |
+---------------+ 4 +------------------+
- 令牌请求 client_id 和 client_secret
- 令牌响应:json 带有 access_token
- 服务请求 header "Authorization: Bearer "
- 服务响应如常。
令牌请求通常采用以下格式:
POST /token HTTP/1.1
Host: authorization-server.com
grant_type=client_credentials
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx
但有些人可能会选择强制执行其他选项:在授权中传递客户端信息 header:
POST /token HTTP/1.1
Host: authorization-server.com
Authorization: Basic base64(client_id:client_secret)
grant_type=client_credentials
Base64 在这里是函数,不是文字字符串。
我对问题和 Turtle 的回答都投了赞成票。我想任何像我一样查过这个问题的人也会从中受益:
https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use
有不同的流程。在代码之前在方框/握手图中考虑它们。