У меня проблема с Spring Security OAuth2. Существует система киосков, где все киоски должны авторизоваться с центральным поставщиком OAuth2 во время запуска. Существует два магазина для учетных данных: один для фактических пользователей (например, техников) и другой для киосков. Коллекция для киосков хранит информацию о профиле киоска, которая по сути является серийным номером всех устройств, используемых в киоске (счет-акцептор, банкомат, термопринтер и т. Д.).Spring OAuth2 пользовательский тип гранта autowiring класс возвращает null
Итак, вот поток, которого я пытаюсь достичь.
- киоска отправляет информацию о профиле в/OAuth/лексемы с
grant_type=kiosk
- Если профиль существует, OAuth2 дает фишку и все отлично
- Если профиль не существует, профиль киоска добавляется в киосках сбор с состоянием «off» и OAuth2 дает 401 Несанкционированный
Теперь я создал новый тип гранта для авторизации киоска. Но мне нужен способ получить доступ к моему картографическому профилю профиля киоска, который является сервисом Spring. Так, в моем классе я добавляю следующее:
class KioskTokenGranter extends AbstractTokenGranter {
@Autowire
KioskProfileService kioskProfile;
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
// request parsing stuff
kioskProfile.findByAttributes(...);
}
}
Snipper выше дает мне NullPointerException, что kioskProfile
не существует. Если я делаю то же самое в AuthorizationServerConfigurerAdapter, работает autwire. Итак, мой вопрос заключается в том, как Autowire сервис внутри TokenGranter.