与A app集成技术方案实现细节以及待处理问题如下:
实现细节:
- 约定URL
- token: “email,ts” 组合通过RSA私钥签名得到的信息。
- email: A app当前登录用户邮箱
- ts: A app系统当前时间戳
- 整个的url A app已经进行了URL encode处理
- A app签名方式:
- 加密方式RSA,
- 秘钥格式为PKCS1
- 签名hash方法为SHA-1
3. B app解析请求,并进行验签。以下三个判断都通过,用户即可登录成功。
a) 验签通过
b) email地址存在于系统的用户表中
c) ts的时间与系统当前时间差不超过半小时
注意点:
生产部署需要调整部分:
A app使用的python rsa包,密钥格式为PKCS1,B app当前使用的jar,支持格式为 PKCS8。在部署生产环境时,如果进行密钥对切换,A app需要提供新的PKCS8的public key
生成PKCS8的方式:
1. A app基于python rsa生成PKCS1密钥对,自己持有PKCS1的秘钥,用于签名
2. 基于PKCS1的秘钥生成PKCS8的秘钥,转换命令如下:
openssl pkcs8 -topk8 -inform PEM -in pri_pkcs1.pem -outform pem -nocrypt -out priv_pkcs8.pem
3. 基于PKCS8的秘钥生成PKCS8的公钥,提供给biologic profile使用,转换命令如下:
openssl rsa -in priv_pkcs8.pem -pubout -out pub_pkcs8.pem