fix(oidc): userinfo 解码关闭 verify_aud,修复 Gitea SSO 401

- pyjwt>=2.13 在 decode 未传 audience 时,payload 含 aud 必抛 InvalidAudienceError
- /oidc/userinfo 改用 options={'verify_aud': False},aud 归属仍由 _ClientIds() 手动校验,安全等价
This commit is contained in:
TermiNexus committed 2026-08-25 08:35:24 +08:00
1 parent be0e9d6a46
commit 6ec24c8bb3
1 file changed
+3 -1
+3 -1
View File
@@ -463,7 +463,9 @@ class OIDCUserInfoView(APIView):
return Response({'error': 'invalid_token'}, status=401)
token = auth[7:]
try:
payload = jwt.decode(token, _GetPrivateKey().public_key(), algorithms=['RS256'])
# verify_aud 关闭:pyjwt>=2.13 未传 audience 时 payload 含 aud 必抛 InvalidAudienceError;
# aud 归属由下方 _ClientIds() 手动校验
payload = jwt.decode(token, _GetPrivateKey().public_key(), algorithms=['RS256'], options={'verify_aud': False})
except jwt.PyJWTError as e:
logger.warning('[OIDC] userinfo token 校验失败: %s', e)
return Response({'error': 'invalid_token'}, status=401)