java - 使用用户名和密码生成访问 token

标签 java post https access-token encoder

我正在尝试使用客户端用户名和密码进行调用后生成访问 token 。我想知道我们如何通过Java代码实现这一点。

基本上,我有用户名和密码。我需要获取访问 token 才能传入下面的授权 header

byte[] encryptedAccessToken = null;
String username = "someUser";
String pass = "somePassword";
String auth = username + ":" + pass;
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1));
URL obj = new URL("https://api.salesforce.com/v2/oauth/token?grant_type=openapi_2lo");
HttpURLConnection postConnection = (HttpURLConnection) obj.openConnection();
postConnection.setRequestMethod("POST");

String authorizationHeader = "Bearer " + "encodedAuth";
postConnection.setRequestProperty("Content-Type", "application/json");
postConnection.setRequestProperty("Authorization", authorizationHeader);

postConnection.setDoOutput(true);

基本上,我有一个用户名和密码。我需要获取访问 token 才能在下面的authorizationHeader 中传递。您能否告诉我如何使用此用户名和密码生成访问 token 。

最佳答案

通过提供用户名和密码来获取访问 token 的标准方法称为“资源所有者密码凭据”流程(RFC 6749,4.3)。如果服务器的 token 端点支持该流程,则您应该发出如下请求。

POST {Token Endpoint} HTTP/1.1
Host: {Authorization Server}
Content-Type: application/x-www-form-urlecoded

grant_type=password    // - Required
&username={User ID}    // - Required
&password={Password}   // - Required
&scope={Scopes}        // - Optional

如果您的客户端应用程序的客户端类型(RFC 6749, 2.1 )是 public,则还需要 client_id 请求参数。如果客户端类型是 secret ,则需要客户端身份验证的请求参数。关于客户端身份验证,请参阅OAuth 2.0 Client Authentication

最后,请注意,(a)用户的凭据和 (b)客户端的凭据是不同的东西。在 OAuth 2.0 的上下文中,没有规范要求将用户的凭据嵌入到 Authorization header 中。另一方面,client_secret_basic(客户端身份验证方法之一)要求将客户端的凭据嵌入到 Authorization header 中。

关于java - 使用用户名和密码生成访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576507/

相关文章:

php - 如何在一个提交按钮上禁用 JS 的情况下为访问者执行两个 POST 请求?

excel - 使用 Excel VBA 代码发送 POST 并检索数据

javascript - 将 ssl 与 websocket 一起使用时出错

json - NodeJS,如何在 GET 请求时调试 TLSSocket.socketOnData 的解析错误?

java - 返回具有对象数组返回类型的 int 数组

java - 如何使用枚举的简单性设计易于扩展的 API?

java - Java Swing中的小问题

java - 如何使用空键处理迭代中的空指针

ssl - 为什么浏览器使用https API访问http网页时不需要安装SSL证书

php - 使用 jQuery ajax 和 PHP 重复条目到 mySQL