mirror of
https://github.com/hanzo-fi/stack.git
synced 2026-10-30 20:34:43 +00:00
36 lines
898 B
Go
36 lines
898 B
Go
package authorization
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/zitadel/oidc/v2/pkg/oidc"
|
|
"github.com/zitadel/oidc/v2/pkg/op"
|
|
)
|
|
|
|
func verifyAccessToken(r *http.Request, o op.OpenIDProvider) error {
|
|
if !strings.HasPrefix(r.URL.String(), "/clients") &&
|
|
!strings.HasPrefix(r.URL.String(), "/users") {
|
|
return nil
|
|
}
|
|
|
|
authHeader := r.Header.Get("authorization")
|
|
if authHeader == "" {
|
|
return ErrMissingAuthHeader
|
|
}
|
|
|
|
if !strings.HasPrefix(authHeader, strings.ToLower(oidc.PrefixBearer)) &&
|
|
!strings.HasPrefix(authHeader, oidc.PrefixBearer) {
|
|
return ErrMalformedAuthHeader
|
|
}
|
|
|
|
token := strings.TrimPrefix(authHeader, strings.ToLower(oidc.PrefixBearer))
|
|
token = strings.TrimPrefix(token, oidc.PrefixBearer)
|
|
|
|
if _, err := op.VerifyAccessToken[*oidc.AccessTokenClaims](r.Context(), token, o.AccessTokenVerifier(r.Context())); err != nil {
|
|
return ErrVerifyAuthToken
|
|
}
|
|
|
|
return nil
|
|
}
|