Как извлечь JWT из заголовка авторизации - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть запрос curl:

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 для анализа этого запроса.Мне нужно извлечь общее имя (CN) из JWT_STRING.Вот как далеко у меня:

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 Ответ

1 голос
/ 13 апреля 2019

Самый простой способ добиться этого - использовать функцию strings.TrimPrefix следующим образом:

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

Это нормально и обычно не относится к процессу, который я использую для извлечения JWT Bearer в промежуточном программном обеспечении аутентификации.

...