基于证书的身份验证的Flask服务器端实现

2024-10-06 07:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现服务器端代码,以使用证书对客户端进行身份验证,并基于证书中关联的组进行授权

客户端代码如下所示:

import json
import requests
    
clientCrt = "cc.crt"
clientKey = "ck.key"
url = "https://example.com/api"
payload = { "someId": "myID" }
certServer = 'cs.crt'
headers = {'content-type': 'application/json'}
r = requests.post(url, data=json.dumps(payload), verify=certServer, 
                  headers=headers, cert=(clientCrt, clientKey))
print(r.status_code)
print(r.json())

我希望有一个相应的服务器端实现,专门检查是否应该基于clientCrt满足请求

有人可以分享我如何在服务器端访问clientCrt并提取证书字段吗

注意:我不是在寻找相互TLS认证,我感兴趣的是服务认证和授权


Tags: 代码importjsonurl客户端服务器端requestsheaders
1条回答
网友
1楼 · 发布于 2024-10-06 07:15:43

未在默认wsgi服务连接对象上配置相互TLS。这需要配置。有关更多详细信息,请参见本页-https://www.ajg.id.au/2018/01/01/mutual-tls-with-python-flask-and-werkzeug/。一旦手头有了连接对象,就可以使用request.environ['peercert'].get_subject()获取客户端证书的详细信息

更好的处理方法是将其委托给Gunicorn或nginx代理。有关更多示例,请参见https://eugene.kovalev.systems/blog/flask_client_auth

相关问题 更多 >