salesforce 外部系统调用salesforce时restful接口认证方式

2024-09-06 10:37:53 浏览数 (2)

本文记录,外部系统调用salesforce时两种认证方式。这两种认证方式都是salesforce提供的标准接口oauth2。

1. 账号密码认证,直接拿到token

代码语言:txt复制
接口地址:
https://test.salesforce.com/services/oauth2/token
调用方式:
POST
参数:
grant_type:  password
client_id:   xxx
client_secret:  xxx
username: xxx
password: xxx

参数名

内容

grant_type

password

client_id

client_secret

username

password

此种方法因账号密码明文传输,在实践中并不安全。因此第二种方式:

2. sf跳转到回调地址拿到code,用code换取token

1.调用authorize接口,重定向到salesforce标准登陆页面

代码语言:javascript复制
接口地址:
https://test.salesforce.com/services/oauth2/authorize
调用方式:
POST

参数名

内容

grant_type

authorization_code

response_type

code

client_id

redirect_uri

回调地址 示例:https://example.com/callback

scope

full

code_challenge

code_verifier 为 随机字符串 sha-256加密后获得code_challenge 。code_verifier在后续的流程中会用到

code_challenge_method

S256

state

helloworld (这个参数可以带过去)

2.用户自行输入密码

3.若用户的账号密码在salesforce认证成功,saleforce自动重定向到已经配置好的回调地址,并附带一个code

代码语言:txt复制
跳转到回调地址:
https://example.com/callback?code=aPrxKeZrWIbgtFNnEb3YmaVOvrOtFAk_ffCgAanAA4n3mslDgD7i6jfQgJGsXb9yOLXgR1hpaQ==
java服务拿到code

4.此回调地址的服务器拿到code,可以调用services/oauth2/token接口换取token

代码语言:txt复制
接口地址:
https://test.salesforce.com/services/oauth2/token
调用方式:
POST

参数名

内容

grant_type

authorization_code

code

aPrxKeZrWIbgtFNnEb3YmaVOvvEYouoUysW2fp3SpWuT3y78EjcIc3WXxdXVtoKcJMwOK003MA==

client_id

client_secret

redirect_uri

回调地址 必须与第一步一致一致

code_verifier

code_verifier 为 随机字符串 sha-256加密后获得code_challenge 。code_verifier在后续的流程中会用到

两种认证方式的区别:

1. 账号密码方式更简便,回调地址方式更安全。

2. 账号密码方式拿到的token无法refresh。回调地址拿到的token可以继续调用refresh接口,做到刷新token,可以实现登录状态持久化的效果。

3. 若salesforce配置了单点登录sso流程,那么在通过登录中心登录的用户,只能通过回调地址方式认证。

下一篇记录单点登录sso过程中,跳转回salesforce后获取token的方式。

0 人点赞