如何从授权标头中提取JWT

时间:2019-04-12 21:22:16

标签: http go jwt

我有这样的卷曲请求:

curl -XPOST -H 'Content-Type: application/json' -H 'Authorization: sso-jwt JWT_STRING' http://localhost:50051/doSomething -d '{"note": "Here's a note"}'

我正在使用echo.Context来解析此请求。我需要从JWT_STRING中提取通用名称(CN)。这是我所走的距离:

tokenString, err := request.HeaderExtractor{"Authorization"}.ExtractToken(c.Request())
    if err == nil {
        fmt.Println(tokenString)
    } else {
        fmt.Println(err)
    }

上面的照片:

sso-jwt JWT_STRING,而我想要JWT_STRING

有没有一种更好的方法来实现这一目标? (除了使用字符串操作仅提取JWT_STRING之外。)

此代码位于我的处理函数内,该函数具有以下签名: func (lock *Lock) DoSomething(c echo.Context) error {}

编辑

以下对我有用:

reqToken := c.Request().Header.Get("Authorization")
splitToken := strings.Split(reqToken, "sso-jwt ")
reqToken = splitToken[1]
fmt.Println(reqToken)

但是,这是实现这一目标的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用strings.TrimPrefix函数,如下所示:

token := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "sso-jwt ")

这是正常现象,通常是我用来在身份验证中间件中检索Bearer JWT的过程的一部分。