在泛微系统(Ecology9)的后端接口中,需要在请求体中加上token的参数。这篇文章记录下泛微Ecology9的token获取方式。
Token获取步骤
一、数据库中新建appid
1
| INSERT INTO ECOLOGY_BIZ_EC(ID,APPID,NAME) VALUES('12','test','数字员工平台');
|
二、向Ecology发送许可证信息进行注册
只需要注册一次即可,注册后相关信息会更新在ECOLOGY_BIZ_EC表中
1 2 3 4 5
| import requests url = 'http://ip:1234/api/ec/dev/auth/regist' headers = {'appid': 'test'} response = requests.post(url, headers=headers ) print( response.json())
|
注册成功后,返回参secret和spk会分别写进ECOLOGY_BIZ_EC表中的secrit和server_public_key中,在后面会使用到。
三、向Ecology发送获取token请求
在上一步中以spk为密钥对secret进行RSA加密,加密后作为请求头的参数调用接口获取token即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import requests import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
def encode_RSA(secret): public_key = '''-----BEGIN RSA PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAutgI110nor/T77o/wpQGEYUqhRNcDIuFybhYO9aP0fiD0Q66EUwTVWtwpgcxV71UMGJlWa0UPd1P6BktnQHzzkAx5aRN5z8dd0TVxCp6zcfUdwnAsPC7PCq4wseLFd0XGmmaeJW+8qlJs+6YSbEQIDAQAB -----END RSA PUBLIC KEY----- ''' secret = secret.encode('utf-8') rsakey = RSA.importKey(public_key) cipher = Cipher_pkcs1_v1_5.new(rsakey) cipher_text = base64.b64encode(cipher.encrypt(secret)) return cipher_text
def getToken(secret): url = 'http://ip:1234/api/ec/dev/auth/applytoken' headers = {'appid': 'jictai','secret':secret} response = requests.post(url, headers=headers ) return response
if __name__ == '__main__': secret = '81ab3d983d34ed5b33' secretRSA = encode_RSA(secret) response = getToken(secretRSA) if response.status_code == 200 : token = response.json()['token'] print(userid)
|
注:
在RSA加密时用到了Crypto模块,安装方式如下:
- 安装pycryptodome库:pip install pycryptodome
- 找到pycryptodome的安装路径:pip show pycryptodome
- 在安装路径下找到一个名为crypto的文件夹,将 c 改为 C
参考文档
《Token认证使用步骤》
《Python使用RSA公私钥做数据加密》