Обмен технологиями

Интегрируйте решение единого входа в проект Spring Boot.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Интегрируйте решение единого входа в проект Spring Boot.

Привет всем, я редактор Weizhuang Taoke System 3.0, а также программист, который не носит длинные кальсоны зимой, но все равно должен быть изящным в холодную погоду!

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

1. Выберите решение для единого входа

Прежде чем вы сможете интегрировать единый вход, вам сначала необходимо выбрать подходящее решение для единого входа. Общие варианты включают решения на основе OAuth2 (например, Spring Security OAuth или Spring Security + OAuth2 Client) и использование встроенных органов аутентификации (например, Keycloak). В качестве примера ниже используется клиент Spring Security + OAuth2.

2. Настройте клиент OAuth2.

В проекте Spring Boot мы можем реализовать функцию единого входа, настроив Spring Security и клиент OAuth2. Вот простой пример конфигурации:

package cn.juwatech.taokua.system.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .oauth2Login()
                .defaultSuccessUrl("/dashboard")
                .and()
            .logout()
                .logoutSuccessUrl("/")
                .permitAll();
    }

    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {
        return new InMemoryClientRegistrationRepository(githubClientRegistration());
    }

    private ClientRegistration githubClientRegistration() {
        return ClientRegistration.withRegistrationId("github")
                .clientId("your-client-id")
                .clientSecret("your-client-secret")
                .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
                .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
                .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
                .scope("read:user")
                .authorizationUri("https://github.com/login/oauth/authorize")
                .tokenUri("https://github.com/login/oauth/access_token")
                .userInfoUri("https://api.github.com/user")
                .userNameAttributeName("id")
                .clientName("GitHub")
                .build();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

3. Встроенный сервер аутентификации.

Если вы решите использовать интегрированный центр сертификации, например Keycloak, вы можете интегрировать его, выполнив следующие действия:

  • Настройте сервер Keycloak и создайте Realm и Client;
  • Настройте адаптер Keycloak в проекте Spring Boot;
  • Настройте Spring Security для использования Keycloak в качестве поставщика аутентификации.

4. Внедрите единый вход

После настройки в проекте пользователи могут войти в систему, используя свои учетные данные, открыв любое приложение. Система автоматически направит пользователя в центр сертификации для аутентификации и получения авторизации, а затем перенаправит обратно к исходному приложению.

в заключение

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

Выпущено редактором Micro-earning Taoke System 3.0, это должен быть качественный продукт. При перепечатке указывайте источник!