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
相关产品推荐
相关产品推荐

