问题记录.md
2.7 KB
101映射域名 dmap.apps.chinadci.com
鉴权
Authlib
1 授权服务器
为授权、颁发令牌、刷新令牌和撤销令牌提供多个端点。当资源拥有者(用户)获得授权时,授权服务器会向客户端颁发访问令牌。
资源拥有者:用户
客户端:客户端是一个代表资源拥有者并在授权情况下请求受保护资源的应用
- client_id是唯一标识
- client_secret是密码
- 客户端令牌端点认证方法
### 令牌
使用令牌访问用户资源,令牌发布时带有有效期,有访问范围等等。它至少包括:
* access_token
- refresh_token *... ### 服务器 authlib使用工具AuthorizationServer管理请求和响应
Web安全
1 接口权限控制
需求:api需要授权
1.确定当前使用openapi2版本 2.了解简单YAML使用方式,文档使用YAML格式 3.声明Swagger,传入配置template(json或者yaml)
Swagger(app, config=swagger_config,template=SWAGGER_TEMPLATE)
2 用户密码加密
用户密码加密不可逆,兼容国产化,使用sm3算法,采用gmssl开源组件
封装好的类使用如下:
from app.models import SM3
password = SM3.encode('test')
3 通过网络传输的敏感信息要加密
使用sm2,通过gmssl工具生成sm2的公钥、私钥。
教程
1.生成sm2公钥、私钥
privatekey使用的pem是zhou@123
2. 使用公钥加密,私钥解密
前端使用sm-crypto,用户与python-gmssl互通
npm_sm-crypto
使用AES对称加密敏感信息,前端加密,后端解密。偏移量iv、加密密钥key与前端保持一致,保证解密正确。封装在models.py中。
依赖组件:
- pycryptodome
- Crypto
- binascii 参考资料 pycryptodome
demo
from app.models import AESHelper
encryption=AESHelper.encode('test_data')
result=AESHelper.decode(encryption)
4 使用验证码,防止恶意破解密码、刷票、论坛灌水、刷页
验证码又叫CAPTCHA
验证码基础知识 使用python图像处理标准库 pillow
5 使用编译文件的方法
cmd下运行./compile.py