@@ -198,6 +198,30 @@ void _oauth2_nginx_request_copy(oauth2_nginx_request_context_t *ctx)
198198 return ;
199199}
200200
201+ static void _oauth2_nginx_ssl_cert_set (oauth2_nginx_request_context_t * ctx )
202+ {
203+ ngx_str_t name ;
204+ ngx_uint_t key ;
205+ ngx_http_variable_value_t * vv = NULL ;
206+
207+ char * s_key = "ssl_client_cert" ;
208+
209+ name .len = strlen (s_key );
210+ name .data = ngx_palloc (ctx -> r -> pool , name .len );
211+ memcpy (name .data , s_key , name .len );
212+ key = ngx_hash_strlow (name .data , name .data , name .len );
213+ vv = ngx_http_get_variable (ctx -> r , & name , key );
214+
215+ if ((vv == NULL ) || (vv -> not_found ))
216+ return ;
217+
218+ char * s = oauth2_strndup ((char * )vv -> data , vv -> len );
219+ oauth2_http_request_context_set (ctx -> log , ctx -> request ,
220+ OAUTH2_TLS_CERT_VAR_NAME , s );
221+
222+ ngx_pfree (ctx -> r -> pool , name .data );
223+ oauth2_mem_free (s );
224+ }
201225oauth2_nginx_request_context_t *
202226oauth2_nginx_request_context_init (ngx_http_request_t * r )
203227{
@@ -224,6 +248,8 @@ oauth2_nginx_request_context_init(ngx_http_request_t *r)
224248
225249 _oauth2_nginx_request_copy (ctx );
226250
251+ _oauth2_nginx_ssl_cert_set (ctx );
252+
227253 oauth2_debug (ctx -> log , "created NGINX request context: %p" , ctx );
228254
229255 // end:
0 commit comments