@@ -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,37 @@ 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 ( "[AuthServer] find_user_by_cookie user not found after session processing" )
83106 { :error , :user , :not_found }
84107
85108 { :error , :session_process_error } ->
109+ Logger . debug ( "[AuthServer] find_user_by_cookie session processing error" )
86110 { :error , :user , :not_found }
87111 end
88112
89113 { :error , :invalid_cookie } ->
114+ Logger . debug ( "[AuthServer] find_user_by_cookie invalid cookie format" )
90115 { :error , :user , :not_found }
91116 end
92117 end
@@ -111,30 +136,47 @@ defmodule Guard.GrpcServers.AuthServer do
111136 { :ok , Map . t ( ) , Map . t ( ) }
112137 | { :error , :session_process_error }
113138 defp process_session ( % { id: session_id } , _ , _ ) do
139+ Logger . debug ( "[AuthServer] process_session OIDC id=#{ session_id } " )
140+
114141 case Guard.Store.OIDCSession . get ( session_id ) do
115142 { :error , :not_found } ->
143+ Logger . debug ( "[AuthServer] process_session session not found id=#{ session_id } " )
116144 { :error , :session_process_error }
117145
118146 { :ok , % Guard.Repo.OIDCSession { refresh_token_enc: nil } } ->
147+ Logger . debug ( "[AuthServer] process_session refresh_token missing id=#{ session_id } " )
119148 { :error , :session_process_error }
120149
121150 { :ok , session } ->
122151 extras = % { ip_address: session . ip_address , user_agent: session . user_agent }
123152
124153 if Guard.Store.OIDCSession . expired? ( session ) do
154+ Logger . debug ( "[AuthServer] process_session expired id=#{ session_id } user_id=#{ session . user_id } " )
155+
125156 case refresh_session ( session ) do
126157 { :ok , session } -> { :ok , % { id: session . user_id } , extras }
127- { :error , _ } -> { :error , :session_process_error }
158+ { :error , reason } ->
159+ Logger . debug (
160+ "[AuthServer] process_session refresh failed id=#{ session_id } user_id=#{ session . user_id } reason=#{ inspect ( reason ) } "
161+ )
162+
163+ { :error , :session_process_error }
128164 end
129165 else
166+ Logger . debug ( "[AuthServer] process_session valid id=#{ session_id } user_id=#{ session . user_id } " )
130167 { :ok , % { id: session . user_id } , extras }
131168 end
132169 end
133170 end
134171
135- defp process_session ( % { } , user_data , extras ) , do: { :ok , user_data , extras }
172+ defp process_session ( % { } , user_data , extras ) do
173+ Logger . debug ( "[AuthServer] process_session no session_id, skipping" )
174+ { :ok , user_data , extras }
175+ end
136176
137177 defp refresh_session ( session ) do
178+ Logger . debug ( "[AuthServer] refresh_session id=#{ session . id } user_id=#{ session . user_id } " )
179+
138180 with { :ok , refresh_token } <-
139181 Guard.OIDC.Token . decrypt ( session . refresh_token_enc , session . user_id ) ,
140182 { :ok , tokens } <- refresh_token ( refresh_token , session . user ) ,
0 commit comments