выдать новый токен доступа (JWT), используя существующий токен доступа (JWT) в Fusionauth, возвращает 401, несмотря на авторизацию JWT cookie - PullRequest
0 голосов
/ 04 июня 2019

Я следую документации здесь: https://fusionauth.io/docs/v1/tech/apis/jwt

И пытаюсь получить новый JWT, чтобы получить доступ ко второму приложению в том же арендаторе.Я использую httpie вместо curl для получения токена доступа:

source config.sh
ACCESS_TOKEN=`http POST "${URL}/api/login" \
 "Authorization:${API_KEY}" \
 "X-FusionAuth-TenantId:${TENANT1_ID}" \
 "applicationId=${APP1_ID}" \
 "loginId=${USER}" \
 "password=${PASS}" \
 | python -m json.tool | grep token | cut -f4 -d'"'`

echo ${ACCESS_TOKEN}

и затем использую этот токен доступа в следующем запросе, чтобы получить доступ ко второму приложению:

source config.sh
JWT=`bash access_token.sh`

http GET ${URL}/api/jwt/issue \
    "Authorization: JWT ${JWT}" \
    "Cookie: access_token=${JWT}" \
    "applicationId=${APP2_ID}"

#http GET ${URL}/api/user \
#        "Authorization: JWT ${JWT}" 

Обратите внимание, что закомментированный запрос к / api / user работает хорошо, однако запрос к / api / jwt / issue возвращает 401.

Как я могу исправить эту ошибку?

1 Ответ

1 голос
/ 05 июня 2019

Параметр запроса applicationId должен быть указан.
https://fusionauth.io/docs/v1/tech/apis/jwt

При использовании httpie один знак равенства = указывает, что параметр должен быть сериализован как JSON вТело запроса, а двойное число равно == указывает, что параметр должен быть добавлен к URI запроса.

httpie текст справки:

'==' Параметры URLдля добавления в URI запроса:

search==httpie

'=' Поля данных для сериализации в объект JSON (с --json, -j) или данные формы (с --form, -f):

 name=HTTPie  language=Python  description='CLI HTTP client'

Попробуйте изменить запрос, чтобы использовать двойное значение, равное == для параметра applicationId.

http GET ${URL}/api/jwt/issue \
    "Authorization: JWT ${JWT}" \
    "applicationId==${APP2_ID}"

Кроме того, вам нужно только отправить cookie или заголовок Authorization.Если вы отправите заголовок Authorization, он будет иметь приоритет.https://fusionauth.io/docs/v1/tech/apis/authentication#jwt-authentication

...