使用Flask与Authlib实现Token撤销端点时返回invalid_client错误
解决Flask+Authlib Token撤销端点返回"invalid_client"的问题
问题原因
你的撤销端点错误使用了@require_oauth()装饰器。Token撤销端点的设计逻辑是由客户端发起请求并验证自身身份,而非验证用户的访问令牌。@require_oauth()会强制要求请求携带有效的用户访问令牌,这和撤销端点的认证逻辑冲突,导致服务端无法正确识别客户端身份,返回invalid_client错误。
修复方案
移除@require_oauth()装饰器,确保客户端通过正确方式传递身份凭证(比如在请求头或表单中携带client_id和client_secret):
@app.route('/revoke', methods=['POST']) def revoke_token(): revocation_response = server.create_endpoint_response( AccessTokenRevocationEndpoint.ENDPOINT_NAME, request) return revocation_response
额外注意事项
- 客户端发起撤销请求时,需按OAuth 2.0规范传递必要参数:
- 必须包含
token参数,指定要撤销的令牌 - 客户端需通过
Authorization头(Basic认证方式)或表单参数传递client_id和client_secret完成身份验证
- 必须包含
- 确保你的Authlib服务器实例已正确配置支持客户端认证的方式(比如
client_authentication_methods)
内容的提问来源于stack exchange,提问作者Alexander P
相关产品推荐
相关产品推荐

