Reputation: 27
I have a curl request as such:
curl -XPOST -H 'Content-Type: application/json' -H 'Authorization: sso-jwt JWT_STRING' http://localhost:50051/doSomething -d '{"note": "Here's a note"}'
I'm using echo.Context to parse this request. I require extracting the Common Name(CN) from the JWT_STRING. This is how far I've got:
tokenString, err := request.HeaderExtractor{"Authorization"}.ExtractToken(c.Request())
if err == nil {
fmt.Println(tokenString)
} else {
fmt.Println(err)
}
The above prints:
sso-jwt JWT_STRING
whereas I want JWT_STRING
.
Is there a way to achieve this in a better way? (Besides using string manipulation to extract only JWT_STRING
).
This code lies inside my handler func which has the following signature:
func (lock *Lock) DoSomething(c echo.Context) error {}
EDIT
The following works for me:
reqToken := c.Request().Header.Get("Authorization")
splitToken := strings.Split(reqToken, "sso-jwt ")
reqToken = splitToken[1]
fmt.Println(reqToken)
However, is it the best way to achieve this?
Upvotes: 1
Views: 1517
Reputation: 835
The most trivial way to achieve this is to use the strings.TrimPrefix
function as follows:
token := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "sso-jwt ")
This is normal and usually apart of the process I use to deal with retrieving Bearer JWTs in authentication middleware.
Upvotes: 1