2016-01-27 5 views
0

Я хотел бы лучше понять, как проверяет токен клиента uaa с облачным литейным цехом.проверить jwt, полученный от cloudfoundry cf client

После входа в систему с помощью инструмента облака литейное УТС, я получил подписанный маркер с помощью

cf oauth-token 

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

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

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

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

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

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

ответ

3

Мое настоящее понимание заключается в том, что CF CLI просто сохраняет закодированный и подписанный токен, созданный 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.

Я надеюсь, что это поможет.

+0

Полезно знать о конечной точке check_token. Это очень полезно. – user152468

2

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

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

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

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