@@ -24,12 +24,23 @@ defmodule Guard.GrpcServers.AuthServer do
2424 @ spec authenticate_with_cookie ( Auth.AuthenticateWithCookieRequest . t ( ) , GRPC.Server.Stream . t ( ) ) ::
2525 Auth.AuthenticateResponse . t ( )
2626 def authenticate_with_cookie ( % Auth.AuthenticateWithCookieRequest { cookie: cookie } , _stream ) do
27+ cookie_hash =
28+ :crypto . hash ( :md5 , cookie )
29+ |> Base . encode16 ( case: :lower )
30+
31+ Logger . debug ( "[AuthServer] authenticate_with_cookie start hash=#{ cookie_hash } " )
32+
2733 observe ( "grpc.authentication.authenticate_with_cookie" , fn ->
2834 case find_user_by_cookie ( cookie ) do
2935 { :ok , { user , id_provider , ip_address , user_agent } } ->
36+ Logger . debug (
37+ "[AuthServer] authenticate_with_cookie user_id=#{ user . id } provider=#{ id_provider } ip=#{ ip_address } "
38+ )
39+
3040 respond_with_user ( user , id_provider , ip_address , user_agent )
3141
3242 { :error , :user , :not_found } ->
43+ Logger . debug ( "[AuthServer] authenticate_with_cookie not found hash=#{ cookie_hash } " )
3344 respond_false ( )
3445 end
3546 end )
@@ -70,23 +81,40 @@ defmodule Guard.GrpcServers.AuthServer do
7081 end
7182 end
7283
73- defp find_user_by_cookie ( "" ) , do: { :error , :user , :not_found }
84+ defp find_user_by_cookie ( "" ) do
85+ Logger . debug ( "[AuthServer] find_user_by_cookie empty cookie" )
86+ { :error , :user , :not_found }
87+ end
7488
7589 defp find_user_by_cookie ( cookie ) do
7690 case Guard.Session . deserialize_from_cookie ( cookie ) do
7791 { :ok , { id_provider , user_data , session_data , extras } } ->
92+ Logger . debug (
93+ "[AuthServer] find_user_by_cookie deserialized provider=#{ id_provider } session_keys=#{ inspect ( Map . keys ( session_data ) ) } extras=#{ inspect ( Map . keys ( extras ) ) } "
94+ )
95+
7896 with { :ok , user_data , extras } <- process_session ( session_data , user_data , extras ) ,
7997 { :ok , user } <- get_user ( user_data ) do
98+ Logger . debug (
99+ "[AuthServer] find_user_by_cookie resolved user_id=#{ user . id } provider=#{ id_provider } "
100+ )
101+
80102 { :ok , { user , id_provider , extras . ip_address , extras . user_agent } }
81103 else
82104 { :error , :user_not_found } ->
105+ Logger . debug (
106+ "[AuthServer] find_user_by_cookie user not found after session processing"
107+ )
108+
83109 { :error , :user , :not_found }
84110
85111 { :error , :session_process_error } ->
112+ Logger . debug ( "[AuthServer] find_user_by_cookie session processing error" )
86113 { :error , :user , :not_found }
87114 end
88115
89116 { :error , :invalid_cookie } ->
117+ Logger . debug ( "[AuthServer] find_user_by_cookie invalid cookie format" )
90118 { :error , :user , :not_found }
91119 end
92120 end
@@ -111,30 +139,54 @@ defmodule Guard.GrpcServers.AuthServer do
111139 { :ok , Map . t ( ) , Map . t ( ) }
112140 | { :error , :session_process_error }
113141 defp process_session ( % { id: session_id } , _ , _ ) do
142+ Logger . debug ( "[AuthServer] process_session OIDC id=#{ session_id } " )
143+
114144 case Guard.Store.OIDCSession . get ( session_id ) do
115145 { :error , :not_found } ->
146+ Logger . debug ( "[AuthServer] process_session session not found id=#{ session_id } " )
116147 { :error , :session_process_error }
117148
118149 { :ok , % Guard.Repo.OIDCSession { refresh_token_enc: nil } } ->
150+ Logger . debug ( "[AuthServer] process_session refresh_token missing id=#{ session_id } " )
119151 { :error , :session_process_error }
120152
121153 { :ok , session } ->
122154 extras = % { ip_address: session . ip_address , user_agent: session . user_agent }
123155
124156 if Guard.Store.OIDCSession . expired? ( session ) do
157+ Logger . debug (
158+ "[AuthServer] process_session expired id=#{ session_id } user_id=#{ session . user_id } "
159+ )
160+
125161 case refresh_session ( session ) do
126- { :ok , session } -> { :ok , % { id: session . user_id } , extras }
127- { :error , _ } -> { :error , :session_process_error }
162+ { :ok , session } ->
163+ { :ok , % { id: session . user_id } , extras }
164+
165+ { :error , reason } ->
166+ Logger . debug (
167+ "[AuthServer] process_session refresh failed id=#{ session_id } user_id=#{ session . user_id } reason=#{ inspect ( reason ) } "
168+ )
169+
170+ { :error , :session_process_error }
128171 end
129172 else
173+ Logger . debug (
174+ "[AuthServer] process_session valid id=#{ session_id } user_id=#{ session . user_id } "
175+ )
176+
130177 { :ok , % { id: session . user_id } , extras }
131178 end
132179 end
133180 end
134181
135- defp process_session ( % { } , user_data , extras ) , do: { :ok , user_data , extras }
182+ defp process_session ( % { } , user_data , extras ) do
183+ Logger . debug ( "[AuthServer] process_session no session_id, skipping" )
184+ { :ok , user_data , extras }
185+ end
136186
137187 defp refresh_session ( session ) do
188+ Logger . debug ( "[AuthServer] refresh_session id=#{ session . id } user_id=#{ session . user_id } " )
189+
138190 with { :ok , refresh_token } <-
139191 Guard.OIDC.Token . decrypt ( session . refresh_token_enc , session . user_id ) ,
140192 { :ok , tokens } <- refresh_token ( refresh_token , session . user ) ,
0 commit comments