http - 如何从授权 header 中提取 JWT

标签 http go jwt

我有这样的 curl 请求:

curl -XPOST -H 'Content-Type: application/json' -H 'Authorization: sso-jwt JWT_STRING' http://localhost:50051/doSomething -d '{"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) 错误 {}

编辑

以下对我有用:

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

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

最佳答案

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

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

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

关于http - 如何从授权 header 中提取 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659585/

相关文章:

go - 在运行时检查结构是否具有结构嵌入

azure - 内置注册/登录策略 Azure B2C 声明的默认值

javascript - 2xx 范围内的 jQuery ajax 自定义 HTTP 状态消息

http - "Method Not Implemented"错误 - Firefox 3

go - 查询字符串运算符

java - 权限代码和名称的 Spring Security 表达式

oauth-2.0 - 使用 keycloak 将自定义键/值添加到 JWT token 负载或用户

java - 使用 Apache Client 4.1.1 压缩 HttpPost 正文时出现问题

java - 将 ZipOutputStream 返回给浏览器

go - 忽略 `godoc` 输出中的外部依赖项和标准库