【问题标题】:Generate Access token with username and password使用用户名和密码生成访问令牌
【发布时间】:2019-12-25 20:09:54
【问题描述】:

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

基本上,我有用户名和密码。我需要获取访问令牌以传入下面的授权标头

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);

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

【问题讨论】:

  • 您不需要在代码中使用访问令牌,您将接收访问令牌,因为您调用的是“登录”API。 Salesforce 提供了如何使用他们的 API 的教程,你检查了吗? developer.salesforce.com/docs/atlas.en-us.api_rest.meta/…!
  • 我提供了一个示例链接和凭据....我在邮递员 POST 方法中传递 url m 用户名和密码以生成访问令牌,同样我想通过 java 代码实现.. 那是在哪里我被卡住了,想得到一些见解。谢谢

标签: java post https access-token encoder


【解决方案1】:

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

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 请求参数。如果客户端类型为机密,则需要客户端认证的请求参数。关于客户端认证,见"OAuth 2.0 Client Authentication"

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

【讨论】:

  • 谢谢.. 但是我如何通过 java 代码实现这一点...,我的要求是我有带有 url 的用户 ID 和密码...需要访问令牌。请协助。谢谢
  • 您可以在AuthleteApiImpl 中找到用于发出 HTTP 请求的 Java API 的使用示例。检查源文件中的callApi()方法。
  • 我检查了这段代码..它没有生成访问令牌,因为它已经通过了令牌。我想用给定的用户名和密码生成访问令牌
  • 我提到 AuthleteApiImpl 不是为了展示如何生成访问令牌,而是展示如何在 Java 中发送 HTTP 请求并接收其响应,因为您问“我如何通过 Java 代码实现这一点”。我展示了 (1) 您应该发送的 HTTP 请求和 (2) Java API 的示例用法。这些信息对大多数工程师来说已经足够了。如果还是无法完成代码,建议您尝试找身边的专家,面对面寻求帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 2020-03-06
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多