@@ -47,44 +47,71 @@ def _extract_params(self):
47
47
self .params ["password" ] = self .request .POST .get ("password" , "" )
48
48
49
49
def validate_params (self ):
50
+ log_extra = {
51
+ "client_id" : self .params ["client_id" ],
52
+ "redirecT_uri" : self .params ["redirect_uri" ],
53
+ "grant_type" : self .params ["grant_type" ],
54
+ "scope" : self .params ["scope" ],
55
+ }
50
56
try :
51
57
self .client = Client .objects .get (client_id = self .params ["client_id" ])
52
58
except Client .DoesNotExist :
53
- logger .debug ("[Token] Client does not exist: %s" , self .params ["client_id" ])
59
+ logger .info (
60
+ "[OIDC:Token] Client does not exist: %s" ,
61
+ self .params ["client_id" ],
62
+ extra = log_extra ,
63
+ )
54
64
raise TokenError ("invalid_client" )
55
65
56
66
if self .client .client_type == "confidential" :
57
67
if not (self .client .client_secret == self .params ["client_secret" ]):
58
- logger .debug (
59
- "[Token] Invalid client secret: client %s do not have secret %s" ,
68
+ logger .info (
69
+ "[OIDC: Token] Invalid client secret: client %s do not have secret %s" ,
60
70
self .client .client_id ,
61
71
self .client .client_secret ,
72
+ extra = log_extra ,
62
73
)
63
74
raise TokenError ("invalid_client" )
64
75
65
76
if self .params ["grant_type" ] == "authorization_code" :
66
77
if self .params ["redirect_uri" ] not in self .client .redirect_uris :
67
- logger .debug ("[Token] Invalid redirect uri: %s" , self .params ["redirect_uri" ])
78
+ logger .info (
79
+ "[OIDC:Token] Invalid redirect uri: %s" ,
80
+ self .params ["redirect_uri" ],
81
+ extra = log_extra ,
82
+ )
68
83
raise TokenError ("invalid_client" )
69
84
70
85
try :
71
86
self .code = Code .objects .select_for_update (nowait = True ).get (
72
87
code = self .params ["code" ]
73
88
)
74
89
except DatabaseError :
75
- logger .debug ("[Token] Code cannot be reused: %s" , self .params ["code" ])
90
+ logger .info (
91
+ "[OIDC:Token] Code cannot be reused: %s" ,
92
+ self .params ["code" ],
93
+ extra = log_extra ,
94
+ )
76
95
raise TokenError ("invalid_grant" )
77
96
except Code .DoesNotExist :
78
- logger .debug ("[Token] Code does not exist: %s" , self .params ["code" ])
97
+ logger .info (
98
+ "[OIDC:Token] Code does not exist: %s" ,
99
+ self .params ["code" ],
100
+ extra = log_extra ,
101
+ )
79
102
raise TokenError ("invalid_grant" )
80
103
81
104
if not (self .code .client == self .client ) or self .code .has_expired ():
82
- logger .debug ("[Token] Invalid code: invalid client or code has expired" )
105
+ logger .info (
106
+ "[OIDC:Token] Invalid code: invalid client or code has expired" ,
107
+ extra = log_extra ,
108
+ )
83
109
raise TokenError ("invalid_grant" )
84
110
85
111
# Validate PKCE parameters.
86
112
if self .code .code_challenge :
87
113
if self .params ["code_verifier" ] is None :
114
+ logger .info ("[OIDC:Token] Missing code_verifier" , extra = log_extra )
88
115
raise TokenError ("invalid_grant" )
89
116
90
117
if self .code .code_challenge_method == "S256" :
@@ -100,6 +127,10 @@ def validate_params(self):
100
127
101
128
# TODO: We should explain the error.
102
129
if not (new_code_challenge == self .code .code_challenge ):
130
+ logger .info (
131
+ "[OIDC:Token] code verifier did not match code challenge" ,
132
+ extra = log_extra ,
133
+ )
103
134
raise TokenError ("invalid_grant" )
104
135
105
136
elif self .params ["grant_type" ] == "password" :
@@ -123,7 +154,7 @@ def validate_params(self):
123
154
124
155
elif self .params ["grant_type" ] == "refresh_token" :
125
156
if not self .params ["refresh_token" ]:
126
- logger .debug ("[Token] Missing refresh token" )
157
+ logger .info ("[OIDC: Token] Missing refresh token" )
127
158
raise TokenError ("invalid_grant" )
128
159
129
160
try :
@@ -132,16 +163,16 @@ def validate_params(self):
132
163
)
133
164
134
165
except Token .DoesNotExist :
135
- logger .debug (
136
- "[Token] Refresh token does not exist: %s" , self .params ["refresh_token" ]
166
+ logger .info (
167
+ "[OIDC: Token] Refresh token does not exist: %s" , self .params ["refresh_token" ]
137
168
)
138
169
raise TokenError ("invalid_grant" )
139
170
elif self .params ["grant_type" ] == "client_credentials" :
140
171
if not self .client ._scope :
141
- logger .debug ("[Token] Client using client credentials with empty scope" )
172
+ logger .info ("[OIDC: Token] Client using client credentials with empty scope" )
142
173
raise TokenError ("invalid_scope" )
143
174
else :
144
- logger .debug ("[Token] Invalid grant type: %s" , self .params ["grant_type" ])
175
+ logger .info ("[OIDC: Token] Invalid grant type: %s" , self .params ["grant_type" ])
145
176
raise TokenError ("unsupported_grant_type" )
146
177
147
178
def validate_requested_scopes (self ):
@@ -158,7 +189,7 @@ def validate_requested_scopes(self):
158
189
token_scopes .append (scope_requested )
159
190
else :
160
191
logger .error (
161
- "[Token] The request scope %s is not supported by client %s" ,
192
+ "[OIDC: Token] The request scope %s is not supported by client %s" ,
162
193
scope_requested ,
163
194
self .client .client_id ,
164
195
)
0 commit comments