You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask OIDC无法识别Cookie中的Access Token,如何配置读取该令牌?

解决Flask OIDC读取Cookie中Access Token的配置方法

Flask OIDC默认仅从Authorization请求头的Bearer Token中提取令牌,要让它支持读取Cookie中的access_token,可以通过以下步骤配置:

  • 重写令牌获取逻辑
    自定义load_token方法,优先从请求头读取令牌,若不存在则从Cookie中提取:

    from flask import request
    from flask_oidc import OpenIDConnect
    
    oidc = OpenIDConnect()
    
    def custom_load_token():
        # 先尝试从Authorization Header获取令牌
        token = oidc._get_token_from_header()
        if token:
            return token
        # 从Cookie中读取指定名称的access_token
        return request.cookies.get('access_token')
    
    # 替换默认的令牌加载方法
    oidc.load_token = custom_load_token
    
  • 配置CORS支持跨域凭证
    若前端是跨域请求,需确保后端CORS配置允许携带凭证,并指定合法的前端域名:

    from flask_cors import CORS
    
    app = Flask(__name__)
    # 开启凭证支持,指定允许的前端域名
    CORS(app, supports_credentials=True, origins=["https://your-frontend-domain.com"])
    
  • 匹配Cookie名称与OIDC配置
    确保前端设置的Cookie名称和后端读取的名称一致,也可通过Flask配置指定默认的Access Token Cookie名:

    app.config.update({
        'OIDC_ACCESS_TOKEN_COOKIE_NAME': 'access_token',  # 与前端Cookie名称对齐
        'OIDC_ID_TOKEN_COOKIE_SECURE': False,  # 开发环境可关闭HTTPS要求,生产环境建议开启
        'OIDC_COOKIE_SAMESITE': 'Lax',  # 跨域场景可设为'None'(需配合Secure=True)
    })
    
  • 验证令牌有效性
    确认Cookie中的access_token是合法的JWT格式,未过期且签名符合OIDC服务端的要求,避免因令牌本身无效导致报错。

内容的提问来源于stack exchange,提问作者donut9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:33:15