| src | 4 months ago | ||
| .gitignore | 4 months ago | ||
| README.md | 4 months ago | ||
| pom.xml | 4 months ago | ||
Библиотека протестирована на Java 11 и Tomcat 9.0.
Для реализации аутентификации OAuth2 VK ID в Вашем приложении сперва необходимо зарегистрировать его в личном кабинете разработчика VK:
Вы окажетесь на странице https://id.vk.com/about/business/go/accounts/{some_id}}/apps/{your_app_id}/edit Отсюда Вам понадобятся ID приложения и Redirect URL.
Дальше можно переходить к работе непосредственно с библиотекой:
Сначала Вам необходимо в Вашем приложении создать бин класса VkSettings, передав ему две настройки:
ПРИМЕЧАНИЕ: Далее вся конфигурация будет строиться на создании бинов Spring. В теории можно попробовать обойтись и без создания бинов этих классов и просто вручную создавать их экземпляры в коде, но такой вариант не проверялся на работоспособность.
Пример:
<beans:bean name="vkSettings" class="ru.simplex2.vkid_spring_security.vk.VkSettings"> <beans:property name="clientId" value="12345678"/> <beans:property name="redirectUri" value="https://mycoolsite.ru/login/oauth2/code/vk"/> </beans:bean>
Далее необходимо зарегистрировать в Вашем приложении два фильтра:
Оба фильтра нужно зарегистрировать в качестве бинов Spring, передавая им в параметры один и тот же экземпляр класса VkSettings.
springSecurity.xml:
<beans:bean name="vkBeginAuthFilter" class="ru.simplex2.vkid_spring_security.vk.VkBeginAuthFilter">
<beans:constructor-arg ref="vkSettings"/>
</beans:bean>
<beans:bean name="vkEndAuthFilter" class="ru.simplex2.vkid_spring_security.vk.VkEndAuthFilter">
<beans:constructor-arg ref="vkSettings"/>
</beans:bean>
Второй фильтр должен срабатывать после первого. Этого можно достичь следующим образом
springSecurity.xml:
<http use-expressions="true">
<custom-filter ref="vkEndAuthFilter" before="BASIC_AUTH_FILTER"/>
</http>
И так же нужно зарегистрировать первый фильтр для прослушивания запросов
web.xml:
<filter>
<filter-name>vkBeginAuthFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>vkBeginAuthFilter</filter-name>
<url-pattern>/oauth2/authorization/vk</url-pattern>
</filter-mapping>
где "/oauth2/authorization/vk" - адрес, по которому нужно будет переходить для начала процесса аутентификации.
В результате успешной аутентификации возвращается объект VkUser с полями, заполненными информацией пользователя VK.
?????
PROFIT!!
Архитектура Мы написали с нуля свой провайдер, а не использовали OAuth2Provider, потому что он плохо документирован.