HiveNetSimpleFlask.auth module

Flask适配的服务鉴权模块

class HiveNetSimpleFlask.auth.AppKeyAuthFlask(**kwargs)[源代码]

基类:AppKeyAuth

AppKey模式验证模块(Flask适配)

整体流程: 调用方对请求报文签名 -> 服务方验证请求签名 -> 服务方处理并对返回报文签名 -> 调用方验证返回报文签名 详细说明如下:

  1. 服务端生成APP信息, 线下提供给商户

    AppId: 商户id AppKey: 公匙(相当于账号) AppSecret: 私匙(相当于密码)

2. 客户端对要发送的数据进行签名, 算法如下: (1) 客户端生成 nonce_str 随机字符串, 例如: ‘ibuaiVcKdpRxkhJA’ (2) 设要发送的数据为集合M, 将所有非空参数值的参数按照参数名ASCII码从小到大排序(字典序), 使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA, 例如:

stringA=”body=test&device_info=1000&mch_id=10000100”

  1. 拼接API密钥 # 拼接app_id、app_key、app_secret、nonce_str、timestamp进入签名字符串 stringSignTemp=stringA+”&app_id=1333&app_key=123456&app_secret=192006250b4c09247ec02edce69f6a2d&nonce_str=xx&timestamp=xx” # 如果选择MD5签名方式, 处理及得到结果如下 sign=MD5(stringSignTemp).toUpperCase()=”9A0A8659F005D6984697E2CA0A9CF3B7” # 如果选择HMAC-SHA256算法签名方式, 处理及得到结果如下 # 注意: 部分语言的hmac方法生成结果二进制结果, 需要调对应函数转化为十六进制字符串。 sign=hash_hmac(“sha256”,stringSignTemp,AppSecret).toUpperCase()=”6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6”

  2. 将sign放入要发送的数据集合中, 客户端调用api接口

  3. 服务器端同样做相应的认证检查

class HiveNetSimpleFlask.auth.IPAuthFlask(**kwargs)[源代码]

基类:IPAuth

IP黑白名单模式验证模块(Flask适配)