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

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

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

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

Ответы

Ответ 1

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

Чтобы процитировать RFC:

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

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

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

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

Я лично использовал pauldijou/jwt-scala в прошлом, на что вы можете взглянуть.