@@ -40,7 +40,15 @@ func NewAuthMiddleware(deps model.Dependencies) *AuthMiddleware {
4040}
4141
4242func (m * AuthMiddleware ) OnRequest (deps model.Dependencies , c model.WebContext ) error {
43- if account := m .ssoAccount (deps , c ); account != nil {
43+ account , err := m .ssoAccount (deps , c )
44+ if err != nil {
45+ deps .Logger ().
46+ WithError (err ).
47+ WithField ("remote_addr" , c .Request ().RemoteAddr ).
48+ WithField ("request_id" , c .GetRequestID ()).
49+ Error ("getting sso account" )
50+ }
51+ if account != nil {
4452 c .SetAccount (account )
4553 return nil
4654 }
@@ -54,7 +62,7 @@ func (m *AuthMiddleware) OnRequest(deps model.Dependencies, c model.WebContext)
5462 return nil
5563 }
5664
57- account , err : = deps .Domains ().Auth ().CheckToken (c .Request ().Context (), token )
65+ account , err = deps .Domains ().Auth ().CheckToken (c .Request ().Context (), token )
5866 if err != nil {
5967 // If we fail to check token, remove the token cookie and redirect to login
6068 deps .Logger ().WithError (err ).WithField ("request_id" , c .GetRequestID ()).Error ("Failed to check token" )
@@ -70,9 +78,9 @@ func (m *AuthMiddleware) OnRequest(deps model.Dependencies, c model.WebContext)
7078 return nil
7179}
7280
73- func (m * AuthMiddleware ) ssoAccount (deps model.Dependencies , c model.WebContext ) * model.AccountDTO {
81+ func (m * AuthMiddleware ) ssoAccount (deps model.Dependencies , c model.WebContext ) ( * model.AccountDTO , error ) {
7482 if ! deps .Config ().Http .SSOProxyAuth {
75- return nil
83+ return nil , nil
7684 }
7785
7886 remoteAddr := c .Request ().RemoteAddr
@@ -82,35 +90,26 @@ func (m *AuthMiddleware) ssoAccount(deps model.Dependencies, c model.WebContext)
8290 if errors .As (err , & addrErr ) && addrErr .Err == "missing port in address" {
8391 ip = remoteAddr
8492 } else {
85- deps .Logger ().
86- WithError (err ).
87- WithField ("remote_addr" , remoteAddr ).
88- WithField ("request_id" , c .GetRequestID ()).
89- Error ("Could not parse remote ip" )
90- return nil
93+ return nil ,err
9194 }
9295 }
9396 requestIP := net .ParseIP (ip )
9497 if ! m .isTrustedIP (requestIP ) {
95- return nil
98+ return nil , errors . New ( "remoteAddr is not a trusted ip" )
9699 }
97100
98101 headerName := deps .Config ().Http .SSOProxyAuthHeaderName
99102 userName := c .Request ().Header .Get (headerName )
100103 if userName == "" {
101- return nil
104+ return nil , nil
102105 }
103106
104107 account , err := deps .Domains ().Accounts ().GetAccountByUsername (c .Request ().Context (), userName )
105108 if err != nil {
106- deps .Logger ().
107- WithError (err ).
108- WithField ("request_id" , c .GetRequestID ()).
109- Error ("Failed to get account from sso header" )
110- return nil
109+ return nil , err
111110 }
112111
113- return account
112+ return account , nil
114113}
115114func (m * AuthMiddleware ) isTrustedIP (ip net.IP ) bool {
116115 for _ , net := range m .trustedIPs {
0 commit comments