проверить jwt, полученный от клиента cloudfoundry cf

Я хотел бы лучше понять, как работает проверка токена клиента uaa с помощью облачного литейного производства.

После входа в систему с помощью инструмента Cloud Foundry cf я получил подписанный токен, используя

cf oauth-token

Насколько я понимаю, этот токен был подписан клиентом cf и содержит исходный токен доступа, который он получил от uaa после того, как я вошел в систему.

Теперь я могу расшифровать этот токен с помощью любого онлайн-анализатора jwt (токен не является конфиденциальной информацией, поскольку инструмент cf предназначен только для моей локальной установки bosh-lite). Но как мне проверить правильность токена? Обычно это задача, которую затем выполняет облачный контроллер, верно?

Я попытался использовать java-библиотеку JJWT следующим образом:

Jwts.parser().setSigningKey("").parseClaimsJws(token).getBody();

Тем не менее, он жалуется на пустой ключ подписи. Какой ключ подписи использует клиент cf? Зарегистрирован ли секрет клиента в UAA?

Любое разъяснение высоко ценится.


person user152468    schedule 27.01.2016    source источник


Ответы (2)


Насколько я понимаю, интерфейс командной строки CF просто сохраняет закодированный и подписанный токен, сгенерированный UAA. Этот токен подписан закрытым ключом UAA и может быть проверен только с помощью соответствующего открытого ключа проверки UAA.

Чтобы проверить этот токен, у вас есть два варианта:

1) Используйте конечную точку UAA (/check_token), которая проверяет данный токен для вас, в этом подходе вам не нужен ключ проверки UAA.

см. https://github.com/cloudfoundry/uaa/blob/master/server/src/main/java/org/cloudfoundry/identity/uaa/oauth/RemoteTokenServices.java

2) Получите открытый ключ проверки UAA (/token_key) и напишите код для проверки подписи jwt.

см. https://github.com/cloudfoundry-incubator/routing-api/blob/master/authentication/token_validator.go

Основываясь на выбранном вами подходе, вы можете имитировать соответствующую реализацию с помощью JS.

Надеюсь, это поможет.

person fordaz    schedule 27.01.2016
comment
полезно знать о конечной точке check_token. Это очень полезно. - person user152468; 28.01.2016
comment
Одно из решений при использовании jjwt может обрабатывать и получать претензии https://github.com/jwtk/jjwt/issues/280 - person 89n3ur0n; 23.05.2020

Все, что вам нужно, это ключ проверки (при условии, что вы действительно хотите проверить подпись токена)

Вот как это происходит 1. Вы можете проанализировать токен JWT без каких-либо ключей, а без ключей он не должен проверять подпись 2. Если вы хотите проверить подпись, предоставьте ключ проверки

Ключ подтверждения находится в папке uaa./token_keys

https://uaa.run.pivotal.io/token_keys

person Community    schedule 27.01.2016