@@ -54,34 +54,40 @@ func (a authController) getAuthToken(w http.ResponseWriter, r *http.Request) {
5454 w .Write (httpJson )
5555}
5656
57- func tokenAuthMiddleware (jwtSecret string , next http.Handler ) http.Handler {
57+ func authMiddleware (jwtSecret string , next http.Handler ) http.Handler {
5858 return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
59- var tokenString string
59+ var bearerTokenString string
6060 for _ , headerValue := range r .Header ["Authorization" ] {
6161 if strings .HasPrefix (headerValue , "Bearer " ) {
62- tokenString , _ = strings .CutPrefix (headerValue , "Bearer " )
62+ bearerTokenString , _ = strings .CutPrefix (headerValue , "Bearer " )
6363 }
6464 }
6565
66- token , err := jwt .Parse (tokenString , func (token * jwt.Token ) (interface {}, error ) {
67- if _ , ok := token .Method .(* jwt.SigningMethodHMAC ); ! ok {
68- return nil , fmt .Errorf ("unexpected signing method: %v" , token .Header ["alg" ])
66+ if bearerTokenString != "" {
67+ token , err := jwt .Parse (bearerTokenString , func (token * jwt.Token ) (interface {}, error ) {
68+ if _ , ok := token .Method .(* jwt.SigningMethodHMAC ); ! ok {
69+ return nil , fmt .Errorf ("unexpected signing method: %v" , token .Header ["alg" ])
70+ }
71+ return []byte (jwtSecret ), nil
72+ })
73+ if err != nil {
74+ log .Printf ("JWT parsing failed: %s" , err )
75+ w .WriteHeader (http .StatusUnauthorized )
76+ return
6977 }
70- return []byte (jwtSecret ), nil
71- })
72- if err != nil {
73- log .Printf ("JWT parsing failed: %s" , err )
74- w .WriteHeader (http .StatusUnauthorized )
75- return
76- }
7778
78- claims , ok := token .Claims .(jwt.MapClaims )
79- if ! ok {
80- log .Printf ("JWT claims failed: %s" , err )
81- }
82- exp , _ := claims .GetExpirationTime ()
83- if exp .Before (time .Now ()) {
84- log .Printf ("JWT expired at: %s" , exp )
79+ claims , ok := token .Claims .(jwt.MapClaims )
80+ if ! ok {
81+ log .Printf ("JWT claims failed: %s" , err )
82+ }
83+ exp , _ := claims .GetExpirationTime ()
84+ if exp .Before (time .Now ()) {
85+ log .Printf ("JWT expired at: %s" , exp )
86+ w .WriteHeader (http .StatusUnauthorized )
87+ return
88+ }
89+ } else {
90+ log .Printf ("Authorization scheme not supported" )
8591 w .WriteHeader (http .StatusUnauthorized )
8692 return
8793 }
0 commit comments