0
点赞
收藏
分享

微信扫一扫

程序员面试完之后,人麻了...

奔跑的酆 2023-04-23 阅读 80

接上一篇异业合作,如果一个第三方系统(我们定义为B系统)需要直接调用本系统(我们定义为A系统),那么系统间必须授权才能访问已保证系统的数据安全。

首先我们定义接口的请求示例,已http协议为例:

http://接口URL?token =xx &jsonData=xxxxx&sign=xxxx

我们可以看到需要访问A系统,我们需要携带token,调用A系统的参数而且这些参数是经过加密的,还有签名。

数据传输标准:

调用方式(url)
POST,视具体接口定义
请求类型(ContentType)
application/json
响应类型(ContentType)
application/json

 首先B系统在请求A系统的数据接口之前先调用A系统的获取token接口。

/oauth2/accessToken

token需要的参数:

参数

参数选项

意义

grant_type

必须

该值固定为access_token

client_id

必须

即对接账号(A系统和B系统约定的账号id)

timestamp

必须

当前调用时间,格式为yyyy-MM-dd HH:mm:ss

示例: “2018-01-01 01:01:01”

时差不能相差半小时以上

username

必须

用户名(A系统和B系统约定的账号)

password

必须

用户密码(双方预定),必须是md5加密后的字符串,不要使用原文!大写

scope

必须

申请权限。(传0,为以后扩展用)

sign

必须

签名,生成规则如下:

按照以下顺序将字符串拼接起来

client_secret+timestamp+client_id+username+password+grant_type+scope+client_secret
username使用原文;

client_secret(双方约定 需要md5加密后的转大写)、password(需要md5加密后的转大写);

将上述拼接的字符串使用MD5加密,加密后的值再转为大写

返回的token数据字段:

返回的token数据格式样例:

{
  "result": true,
  "msg": "success",
  "uid": "57",
  "access_token": "8BAC35711832492780DA535259949CA8",
  "refresh_token": "FF69836D701C49E88EB1823AB545CEFB",
  "time": 1564385329500,
  "expires_in": 86400,
  "refresh_token_expires": 1567063729500
}
举报

相关推荐

0 条评论