Django OAuth Toolkit 分离资源与认证服务器Docker部署后内省失败报认证凭证未提供
Django OAuth Toolkit 拆分部署Docker环境异常排查记录
本地开发阶段验证情况
- 按照Django OAuth Toolkit官方资源服务器教程完成代码开发,使用
python manage.py runserver启动服务时功能正常 - 整体业务链路为:Postman作为客户端向资源服务器发起请求,资源服务器通过内省流程向认证服务器校验用户身份,该链路在本地开发环境可正常运行
Docker部署后异常现象
- 改用Docker-Compose编排,结合Nginx、Gunicorn部署服务后链路异常:最终请求接口报错为访问
/o/introspect/路径时达到最大重试次数 - 日志排查定位到故障点:令牌校验环节向
localhost:8000/o/introspect/发起的POST内省请求失败,客户端接口直接返回 Authentication credentials were not provided. - 初步判断问题出现于访问令牌过期、吊销后系统尝试重新校验令牌的流程中,内省流程无明确报错但执行失败
问题根源排查
- 核心诱因:Docker Compose会为每个Django项目服务创建独立的隔离容器,资源服务器所在容器无法通过localhost地址访问到认证服务器所在容器暴露的8000端口
已验证解决方案
- 使用Docker Compose中定义的服务名作为容器间通信地址(可对接Nginx代理配置)实现跨容器请求转发,经调试该方案可正常解决问题
内容的提问来源于stack exchange,提问作者Edward Y. Rogers
相关产品推荐
相关产品推荐

