Как лучше всего выполнить аутентификацию OAuth2 с помощью akka-http?

Akka HTTP и Spray предоставляют директиву authenticateOAuth2, но в их документации указано, что

Эта директива не реализует полный протокол OAuth2, но вместо этого позволяет реализовать его, извлекая необходимый токен из заголовков HTTP.

Я также не могу найти библиотеки, реализующие OAuth2 для Akka HTTP или Spray. Я что-то упускаю, или это просто состояние этих библиотек прямо сейчас?


person Dan Li    schedule 05.02.2016    source источник
comment
На самом деле, для этого существует всего несколько библиотек. Вы проверили что-нибудь из этого? github.com/hasanozgan/spray-oauth или github.com/nulab/scala-oauth2-provider   -  person mayacr86    schedule 01.04.2016
comment
@mayacr86 Я сослался на этот проект github.com/nulab/scala-oauth2-provider . но я не могу найти основной метод, код запуска веб-сервера, код конечных точек (маршрутов). Я прошу вас предоставить эти коды (основной метод, код запуска веб-сервера, код конечных точек (маршрутов) и команду curl для запуска проекта).   -  person user123456    schedule 03.05.2020


Ответы (1)


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

Процитируем RFC:

Токен может обозначать идентификатор, используемый для получения информации об авторизации, или может содержать информацию об авторизации в поддающемся проверке виде (т. е. строку токена, состоящую из некоторых данных и подписи). Дополнительные учетные данные аутентификации, которые выходят за рамки этой спецификации, могут потребоваться для того, чтобы клиент мог использовать токен.

Токены доступа могут иметь разные форматы, структуры и методы использования (например, криптографические свойства) в зависимости от требований безопасности сервера ресурсов. Атрибуты токена доступа и методы, используемые для доступа к защищенным ресурсам, выходят за рамки этой спецификации и определяются сопутствующими спецификациями, такими как [RFC6750].

Например, вы можете использовать JWT для проверки запроса или использовать токен только как идентификатор и запрашивать у службы, токен разрешен для этого ресурса.

В зависимости от вашего провайдера OAuth2 реализация может различаться, поэтому я предполагаю, что фреймворк может предоставить вам только общую вещь (извлечь токен для вас) или ему придется реализовать все возможные реализации OAuth2, что кажется невозможным на данный момент.

Я лично использовал pauldijou/jwt-scala в прошлом. посмотри на.

person felixbr    schedule 07.05.2017