适用于特殊情况的 OAuth 2.0 用户名密码流
您可以使用用户名-密码流通过连接的应用程序来授权已经拥有用户凭据的客户端。但是,我们建议避免该流,因为它来回传递凭据。只有在资源所有者和客户端之间高度信任、客户端是第一方应用程序、Salesforce 托管数据以及其他授权类型不可用的情况下,才使用它。在这些个案中,设置用户权限,以最小化访问权限,并避免未经授权地访问存储的凭据。
所需的 Edition
| 适用于 Salesforce Classic 和 Lightning Experience |
| 适用于:所有版本 |
重要 为了提高安全性,我们建议使用 OAuth 2.0 Web 服务器流和用于代码交换的证明密钥 (PKCE) 或 OAuth 2.0 客户端凭据流,而不是用户名-密码流。我们还建议您阻止所有连接的应用程序使用用户名密码流。
用户名-密码流生成访问标记,作为无法自检的 Salesforce 会话 ID。因为访问标记是临时的,所以使用此流的连接的应用程序不会显示在“连接的应用程序 OAuth 使用”页面上,即使它们有活动会话。该流不支持范围或刷新标记。Experience Cloud 站点不支持 OAuth 2.0 用户名-密码流。
以下是用户名-密码流中涉及的主要步骤。
请求访问标记
要请求访问令牌,连接的应用程序会将用户的用户名和密码作为带外 POST 发送到 Salesforce 令牌端点。该 POST 是一个示例。
grant_type=password&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571&
username=testuser@salesforce.com&
password=mypassword在 POST 中包括这些参数。
重要 在开发 OAuth 集成时,请始终在 POST 请求的正文或请求标题中传递敏感信息。不要在 URL 查询字符串中使用 GET 参数来传递敏感信息。敏感信息包括但不限于用户名、密码、OAuth 令牌、客户端密码和任何个人身份信息。有关安全最佳实践的更多信息,请查看安全编码指南中的存储敏感数据。
| 参数 | 描述 |
|---|---|
grant_type
|
连接的应用程序请求的 OAuth 2.0 授权类型。对于此流,值必须是 password。 |
client_id
|
连接的应用程序的使用者密钥。要访问消费者密钥,请从应用程序管理器中找到连接的应用程序,并从下拉列表中选择查看。然后,单击管理客户详细信息。在查看消费者密钥之前,有时会提示您验证您的身份。 |
client_secret
|
连接的应用程序的使用者密码。要访问使用者密码,请从应用程序管理器中找到连接的应用程序,并从下拉列表中选择查看。然后,单击管理客户详细信息。在查看使用者密码之前,有时会提示您验证您的身份。 |
username
|
连接的应用程序正在模仿的用户的用户名。 |
password
|
连接的应用程序正在模仿的用户的密码。 使用具有 API 的用户名密码流程时,在用户名和密码登录屏幕中创建字段,用户可以在其中输入其安全标记。安全标记是自动生成的密钥,您必须将其附加到密码末尾,以便从非受信网络登录 Salesforce。在传递验证请求时连结其密码和标记。 |
format
|
如果没有包含在请求的标题中,您可以指定预期的返回格式。
|
Salesforce 授予访问标记
在验证请求之后,Salesforce 会发送响应给客户端。
此处是示例响应。
{"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448832702",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"0CmxinZir53Yex7nE0TD+zMpvIWYGb/bdJh6XfOH6EQ=",
"access_token":"00Dx0000000BV7z!AR8AQAxo9UfVkh8AlV0Gomt9Czx9LjHnSSpwBMmbRcgKFmxOtvxjTrKW19ye6PE3Ds1eQz3z8jr3W7_VbWmEu4Q8TVGSTHxs",
"token_type":"Bearer"}这些参数在响应的正文中。
| 参数 | 描述 |
|---|---|
id
|
可用于标识用户以及查询有关用户的更多信息的身份 URL。请参阅身份 URL。 |
issued_at
|
签名创建时间的时间戳,单位毫秒。 |
instance_url
|
指示用户的组织实例的 URL。例如:https://yourInstance.salesforce.com/.
|
signature
|
使用 client_secret 签名的 Base64 编码 HMAC-SHA256 签名。签名可以包括连接 ID 和issued_at value,您可以使用它们来验证身份 URL 在服务器发送后没有更改。 |
access_token
|
连接的应用程序用来代表客户端应用程序请求访问受保护资源的 OAuth 标记。访问标记可以附带范围形式的附加权限。 |
token_type
|
Bearer 令牌类型,用于包含访问令牌的所有响应。
|
备注 此响应不会发送刷新标记。
本文章是否解决您的问题?
请与我们共享您的想法,以便我们进行改进!

