Рубрики
Без рубрики

Spring boot + Keycloak – защита ваших Api-интерфейсов (часть 1)

Безопасности в Api? Имеет Api, в твоих услугах? Как это безопасность этих Api? Иметь… Помеченный java, spring boot, keycloak.

Безопасности в Api?

Имеет Api, в твоих услугах? Как это безопасность этих Api? У нас есть несколько способов применения охранников в наших Api. Одним из них является аутентификации и авторизации с использованием OpenID / OAuth2 .

Keycloak

Чтоб разработать, если у нас уже есть готовые инструменты? O Ключ-плащ é uma ferramenta с открытым исходным кодом, чтобы доказать аутентификацию и авторизацию для использования в службах, использующих протоколы, такие как OpenID, OAuth2 и SAML. Он имеет интеграцию с LDAP, AD и социальных сетей. Для testermos, давайте расти una экземпляр docker: docker ru --name keycloak -p 8080:8080 -и -и-набережная.io/keycloak/keycloak:14.0.0 Он поднимается экземпляр H2 и даже перезапуске службы не потеряете все настройки, что мы делаем.

Конфигурационный ключ o Keycloak

Службы будут подниматься на порт 8080 и может быть доступен по url http://localhost:8080 Quando subimos o docker, stamo su usuario essenza iniciais (KEYCLOAK_USER= admin e KEYCLOAK_PASSWORD= admin ). Нажмите кнопку “Administration Console”, пожалуйста, введите имя пользователя/пароль, чтобы войти в консоль. Первое, что нужно сделать в консоли, – это создание сферы. Мы можем понять здесь, что область-это представление вашего приложения, мы можем иметь несколько приложений, работающих на одном экземпляре Keycloak. По умолчанию уже создан сферы master , где существует учетная запись администратора, изначально созданные и только мы будем ее использовать для создания других сфер. Итак, в левом верхнем углу мы нажимаем на кнопку “Добавить область”. Следующий шаг заключается в создании и настройке клиента. На вкладке слева, нажмите кнопку “Clients”, а затем кнопку “Create”. После если не указано, мы будем изменить следующие свойства client. Здесь url-адрес был добавлен только будет необходимо, мы не будем использовать его. Эти изменения необходимы, чтобы, используя этот client-id, удастся приобрести токен для доступа к Api.

Приложение

Давайте создадим простой проект с помощью Весенняя инициализация/| .

Abra o projeto na sua IDE, редактировать o приложение.свойства и добавьте порт, который ваше приложение будет расти:

server.port=8090

Мы будем добавлять контроллер ниже: Поднимаясь конструкция и делают тест простой почтальон, мы видим, что конечная точка это совершенно открыто, без каких-либо безопасности.

Теперь мы собираемся добавить в безопасности. Отредактируйте пом.xml и добавить необходимые зависимости:

        
            org.springframework.security
            spring-security-config
        
        
            org.springframework.boot
            spring-boot-starter-oauth2-resource-server
        

Только добавить зависимости, наши концами уже не будут выставлены. Теперь мы будем информировать spring security, какой url-адрес проверки токена. Мы будем править | application.свойства и будем добавлять свойства, необходимо:

spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8080/auth/realms/security-api

Внимание последний элемент url-адреса, он это имя realm.

И это основное, что мы должны иметь наш API безопасный.

Взяв маркер

Токен доступа к единой системе обмена сообщениями Vamos pegar без ключа для проверки конечной точки nosso. URL-адрес для использования токена доступа é: http://localhost:8080/auth/realms/security-api/protocol/openid-connect/token Вспомнив, что security-api это имя realm. В почтальон, создайте запрос POST, используя этот url-адрес выше. В body request будем отправлять следующий:

  • client_id: имя клиента, который был создан в keycloak, в нашем случае-это web-app .
  • client_secret: aqua precisamos pagar o valor lerado la без кадастра у клиента нет ключа. Редактировать o клиент перейдите на вкладку “Credentials” и скопируйте значение “Secret”
  • grant_type: vamos setar “client_credentials”, pois iremos gerar um токен для um клиентского кадастра, без ключа.

Testando o конечная точка seguro

Мы будем копировать значение поля “access_token” ответ ” и ” мы будем править request к нашим сервисом. Этот маркер должен быть включен в заголовок request key Authorization и в value включим префикс, который показывает, какой тип токена, который будет Предъявителя . Будет выглядеть так: На данный момент это… мы будем улучшать этот код в части 2.

Код из этого учебника, в github

Уже вышел второй частью учебника, вы можете посмотреть здесь

Оригинал: “https://dev.to/mmacorin/spring-boot-keycloak-protegendo-suas-apis-parte-1-436o”