«Я люблю писать код аутентификации и авторизации». Нет Java-разработчика. Надоело строить одни и те же экраны входа снова и снова? Попробуйте API Okta для размещенной аутентификации, авторизации и многофакторной аутентификации.
С помощью SpringBoot и Okta вы можете раскрутить REST-сервер корпоративного качества с полным управлением идентификацией и авторизацией пользователей менее чем за 20 минут. Spring Boot и его начальные пакеты поставляют готовый к работе сервер Tomcat, а Okta защищает ваши API с помощью OAuth.
Этот учебник проведет вас через весь процесс. Как только вы подключите Okta к сети, легко добавить полнофункциональную клиентскую аутентификацию и администрирование пользователей с помощью всего лишь нескольких строк кода и конфигурации! Также в этом руководстве я покажу вам, как ваш защищенный сервер Spring Boot сможет обслуживать веб-контент или функционировать в качестве внутреннего API, но только для пользователей, которые зарегистрировались у вас. Готовы? Поехали!
Начни с Spring Boot и Okta
Переход с нуля на защищенный веб-сервер не происходит мгновенно. Для завершения этого проекта вы:
- Загрузите новый стартовый проект Spring Boot, используя Spring Initializr
- Создайте новую учетную запись Okta и получите доступ к панели администратора.
- Добавьте несколько строк кода и конфигурации
- Смотрите Единый вход в действии на вашем новом сервере!
Почему весна?
Spring — это зрелый, широко используемый и хорошо документированный набор инструментов и библиотек, которые были созданы, чтобы сделать вашу жизнь проще как разработчика Java. Он предлагает огромный набор функций, от простых подключений к базам данных и создания серверов (как мы увидим в этом руководстве) до безопасности «под ключ», обмена сообщениями, разработки мобильных приложений и многого другого.
Spring Boot — это подпроект Spring, который нацелен на то, чтобы сделать его очень быстрым и простым для загрузки нового приложения Spring. Одна из его основных привлекательных сторон заключается в том, что он не требует дурачиться с грязными файлами конфигурации (распространенная жалоба на экосистему ранней весны). Как мы скоро увидим, использование нескольких простых аннотаций и зависимостей Maven перенесет нас с нуля на защищенный веб-сервер за считанные минуты.
Загрузите и инициализируйте новый проект Spring Boot
Spring предлагает инструмент Spring Initializr, который позволяет одним щелчком мыши создать и загрузить ZIP-файл, содержащий новый проект Spring Boot. Отправляйтесь туда и создайте новый проект, который включает в себя веб-сайты и безопасность . Я оставил артефакт по умолчанию и группу нетронутыми и разархивировал файл demo.zip
в моем домашнем каталоге. Это распаковало следующие файлы:
Те из вас, кто знаком с Maven , распознают файл pom.xml . Всего четыре маленьких зависимости извлекают огромное количество функциональности из Spring:
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-security</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-test</ artifactId > < scope >test</ scope > </ dependency > < dependency > < groupId >org.springframework.security</ groupId > < artifactId >spring-security-test</ artifactId > < scope >test</ scope > </ dependency > |
Прежде чем перейти к интересным вещам, убедитесь, что все кошерно, запустив сервер через:
. /mvnw spring-boot:run |
Среди всех красочных операторов журнала тот, который нужно искать, вероятно, занимает второе место после последнего:
Tomcat started on port(s): 8080 (http) |
Поскольку при создании проекта вы запрашивали пакет Spring Security Starter, сервер по умолчанию защищен с помощью обычной аутентификации . Это можно проверить, открыв браузер и посетив:
http: //localhost :8080 |
Должно появиться диалоговое окно браузера с запросом вашего имени пользователя и пароля (которые вы еще не установили):
Вместо того, чтобы задавать жестко заданные имя пользователя и пароль на новом сервере, не лучше ли внезапно получить доступ к полноценному управлению сеансами OAuth, администрированию пользователей, статистике сайта и многому другому? Мы можем сделать это всего за несколько минут с Okta!
Добавьте OAuth-аутентификацию на ваш сервер с помощью Okta
Теперь пришло время усовершенствовать ваш сервер с помощью управления пользователями, хранения и ротации ключей и учетных данных, обслуживания сервера OAuth, обработки забытых паролей и удобного административного интерфейса. Это звучит как большая работа! К счастью, это сделано для вас с помощью сервисов управления и авторизации Okta. Вы просто подключаете зависимости Okta к своему проекту Spring Boot, настраиваете несколько параметров безопасности, и вы получаете все это и пакет фишек всего за несколько простых шагов. Вот как.
Получите свои учетные данные Okta
Если вы новичок в Okta, вы можете зарегистрироваться здесь и получить бесплатный аккаунт разработчика. Вы получите приглашение по электронной почте с вашим именем пользователя (вашим адресом электронной почты) и временным паролем. Перейдите по ссылке, указанной в электронном письме, войдите в систему с использованием этих учетных данных и создайте свою учетную запись администратора впервые. Вам будет предложено создать новый пароль, и после завершения этой страницы вы найдете консоль разработчика Okta. Здесь есть что исследовать, поэтому, если вы хотите, не стесняйтесь сделать перерыв и осмотреться!
Когда вы будете готовы продолжить, перейдите на вкладку Приложения на панели инструментов Okta. Это должно выглядеть примерно так:
Нажмите зеленую кнопку « Добавить приложение» , и, поскольку вы создаете веб-сервер, выберите « Веб» (.NET, Java и т. Д.) В качестве типа приложения и нажмите « Далее» :
На следующей странице настроек есть одно значение по умолчанию для изменения. В поле URI переадресации входа в систему замените значение по умолчанию на:
http: //localhost :8080 /login |
Затем нажмите Готово . Это приведет вас к домашней базе для вашего нового приложения. Здесь также есть множество функций, но сейчас вы захотите принять к сведению несколько фрагментов информации на дополнительной вкладке « Общие » главной вкладки приложения в панели управления. Первые два — это идентификатор клиента и секрет клиента, расположенные в нижней части страницы:
Держите их под рукой и держите их в безопасности! Вы будете использовать их на своем сервере Spring Boot для аутентификации в Okta.
Затем перейдите на вкладку API в верхней части панели инструментов и на этом экране запишите URI эмитента . Если вы этого не видите, убедитесь, что вы находитесь на вкладке Серверы авторизации . Это сервер авторизации OAuth Okta, с которым будет взаимодействовать ваш сервер.
Теперь, когда ваш идентификатор клиента, секрет клиента и URI эмитента где-то надежно спрятаны; пришло время подключить Okta к вашему серверу. Добавьте зависимости Okta и Spring OAuth вместе с другими в файле pom.xml :
< dependency > < groupId >com.okta.spring</ groupId > < artifactId >okta-spring-boot-starter</ artifactId > < version >0.2.0</ version > </ dependency > < dependency > < groupId >org.springframework.security.oauth</ groupId > < artifactId >spring-security-oauth2</ artifactId > < version >2.2.0.RELEASE</ version > </ dependency > |
Далее вы добавите три значения в: src/main/resources/application.properties
okta.oauth2.issuer=(your **Issuer URI**) okta.oauth2.clientId=(your **Client ID**) okta.oauth2.clientSecret=(your **Client Secret**) |
Вот так:
okta.oauth2.issuer=https: //dev-279161.oktapreview.com/oauth2/default okta.oauth2.clientId=0oacqif7do3e0hD0h7 okta.oauth2.clientSecret=(your **Client Secret**) |
Последнее, что нужно сделать перед тем, как пожинать все, что может предложить Okta, — используйте его на своем сервере! В этом сообщении цель состоит в том, чтобы добавить аутентификацию единого входа, чтобы только пользователи, которые зарегистрировались у вас, могли войти на ваш сервер и взаимодействовать с ним. Основной класс приложения должен сообщить клиентской библиотеке Okta о включении единого входа, и это делается путем добавления следующей аннотации к основному классу приложения по адресу: src/main/java/com/example/demo/DemoApplication.java
@EnableOAuth2Sso |
Пока вы в этом, можете также добавить конечную точку, которая будет что-то делать с новой информацией пользователя, которую мы собираемся получить. Вы можете дать основному классу Application возможность обрабатывать запросы, украсив его:
@RestController |
Okta предоставляет идентификатор пользователя вызывающей стороны через интерфейс java.security.Principal
. По умолчанию это адрес электронной почты пользователя. Вы можете добавить обработчик запроса, который повторяет адрес электронной почты пользователя, например так:
@GetMapping ( "/" ) public String echoTheUsersEmailAddress(Principal principal) { return "Hey there! Your email address is: " + principal.getName(); } |
С новым импортом, аннотациями и обработчиком запросов основной DemoApplication.java
должен выглядеть следующим образом:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.security.Principal; @RestController @EnableOAuth2Sso @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication. class , args); } @GetMapping ( "/" ) public String echoTheUsersEmailAddress(Principal principal) { return "Hey there! Your email address is: " + principal.getName(); } } |
Когда вы перезапустите сервер с помощью ./mvnw spring-boot:run
и зайдите в браузер на http://localhost:8080
, вы попадете на свой личный поддомен Okta для входа в систему:
Вы можете войти в систему, используя адрес электронной почты и пароль, которые вы указали при создании учетной записи Okta, поскольку вы были добавлены по умолчанию в качестве пользователя в приложении Okta «My Web App». Если вы не создали нового пользователя на панели администратора, это единственный пользователь, которому было предоставлено разрешение на доступ к вашему сайту.
После того, как вы вошли в систему, вы будете перенаправлены обратно на ваш сайт в качестве аутентифицированного пользователя, и вы увидите, что ваш адрес электронной почты возвращается вам!
Что дальше?
Теперь начинается настоящее веселье, когда вы создаете или подключаете новых пользователей к своему приложению! Потратьте некоторое время на эксперименты с различными уровнями разрешений. Изучите журналы аудита, чтобы увидеть, чем занимались ваши пользователи. Добавляйте пользователей в группы, настраивайте и управляйте сообщениями электронной почты и текстовых сообщений.
Хотите узнать больше? Проверьте эти другие ресурсы Java:
- Наша документация по продукту Java
- Защитите свой SPA с помощью Spring Boot и OAuth
- Добавьте контроль доступа на основе ролей в свое приложение с помощью Spring Security и Thymeleaf
И если у вас есть вопросы по поводу этого или любого другого нашего контента (или просто хотите пообщаться!), Напишите нам на Twitter @OktaDev . Мы хотели бы услышать от вас!
«Я люблю писать код аутентификации и авторизации». Нет Java-разработчика. Надоело строить одни и те же экраны входа снова и снова? Попробуйте API Okta для размещенной аутентификации, авторизации и многофакторной аутентификации.
Добавление единого входа в веб-приложение Spring Boot за 15 минут было впервые опубликовано в блоге разработчиков Okta 20 ноября 2017 года.