Laravel жетон шлюза - PullRequest
       19

Laravel жетон шлюза

0 голосов
/ 29 февраля 2020

Введение / История вопроса

Я хочу включить аутентификацию токена для нескольких микроуслуг и пользователей. И приложения, и пользователи являются $user объектами.

Мне нужно иметь возможность один раз пройти аутентификацию (следовательно, токен) с использованием сервера аутентификации на поддомене. Затем мне нужно иметь возможность передавать токен, которым может управлять (отзывать / обновлять что угодно) сервер Auth.

Микросервисы основаны на Laravel, поэтому использование Airlock имеет смысл. Airlock легко генерирует токены, используя:

  • $token = $user->createToken(now())

Однако я не вижу способа вручную проверить действительность этих токенов ... Поэтому я предположил, что они доступны в базе данных.

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

  • $token->plainTextToken

Это создает токен, как и ожидалось. Насколько я понимаю, это публичный токен. Он не соответствует токену в таблице personal_access_tokens.

Позволяет называть эти PublicToken и PrivateToken.

Частный токен фактически находится в:

  • $token->accessToken->token

Я хочу иметь возможность вручную переключаться между PublicToken. Я предполагаю, что Airlock обеспечивает некоторую безопасность здесь ... и я хочу вызвать эти безопасные методы, необходимые для проверки PublicToken против PrivateToken.

Пожалуйста, не говорите "он находится в промежуточном программном обеспечении" ... Дело в том, что я иметь несколько микросервисов и пользовательских типов, совместно использующих базу данных. У меня есть аутентификационный сервер, который в конечном итоге будет работать на защищенной архитектуре, и некоторые другие микросервисы не будут ... по сути, мне нужно выполнить аутентификацию вручную, потому что обычная функция plug and play не работает. Использование Airlock в качестве основы это здорово. Но мне нужно знать, как конвертировать между publi c и приватными токенами.

По сути, я ищу реальную версию следующего псевдокода:

  • if( someTranslationFunction($public_token) == $private_token ) ...

TLDR: проблема

Как мне проверить $token->plainText значение по $token вручную?

...