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:
1 parent
be0e9d6a46
commit
6ec24c8bb3
1 file changed
+3
-1
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user