प्रौद्योगिकी साझेदारी

Spring Boot परियोजनायां एकल-साइन-ऑन्-समाधानं एकीकृत्य स्थापयन्तु

2024-07-12

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

Spring Boot परियोजनायां एकल-साइन-ऑन्-समाधानं एकीकृत्य स्थापयन्तु

नमस्कारः सर्वेभ्यः, अहं Weizhuan Taoke System 3.0 इत्यस्य सम्पादकः अस्मि, अपि च अहम् एकः प्रोग्रामरः अपि अस्मि यः शिशिरे दीर्घं johns न धारयति, परन्तु तदपि शीते शीतलं भवितुम् अर्हति!

आधुनिक उद्यम-अनुप्रयोगेषु, एकल-साइन-ऑन् (SSO) समाधानं प्रमुख-प्रौद्योगिकी अस्ति यत् सुनिश्चितं करोति यत् उपयोक्तारः निर्विघ्नतया प्रवेशं कर्तुं शक्नुवन्ति, बहु-अनुप्रयोगेषु प्रवेशं च कर्तुं शक्नुवन्ति । अस्मिन् लेखे विस्तरेण परिचयः भविष्यति यत् उपयोक्तृ-अनुभवं प्रणाली-सुरक्षां च सुधारयितुम् Spring Boot परियोजनायां एकं साइन-ऑन्-समाधानं कथं एकीकृत्य भवति ।

1. एकं साइन-ऑन् समाधानं चिनुत

एकल-साइन-ऑन्-समाधानं एकीकृत्य प्रथमं भवद्भिः प्रथमं उपयुक्तं एक-साइन-ऑन्-समाधानं चिन्वितुं आवश्यकम् । सामान्यविकल्पेषु OAuth2-आधारितसमाधानं (यथा Spring Security OAuth अथवा Spring Security + OAuth2 Client), एकीकृतप्रमाणीकरणाधिकारिणां उपयोगः (यथा Keycloak) च अन्तर्भवति निम्नलिखितम् उदाहरणरूपेण Spring Security + OAuth2 Client इत्यस्य उपयोगं दर्शयति ।

2. OAuth2 Client विन्यस्तं कुर्वन्तु

Spring Boot परियोजनायां वयं Spring Security तथा OAuth2 Client विन्यस्य एकल-साइन-ऑन्-कार्यं कार्यान्वितुं शक्नुमः । अत्र सरलं विन्यास उदाहरणम् अस्ति :

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 Server विन्यस्य Realm तथा Client रचयन्तु;
  • Spring Boot परियोजनायां Keycloak Adapter विन्यस्यताम्;
  • प्रमाणीकरणप्रदातृरूपेण Keycloak इत्यस्य उपयोगाय Spring Security विन्यस्यताम् ।

4. एकल-साइन-ऑन् कार्यान्वितं कुर्वन्तु

परियोजनायां विन्यस्तं कृत्वा उपयोक्तारः कस्यापि अनुप्रयोगस्य अभिगमनेन स्वस्य प्रमाणपत्रस्य उपयोगेन प्रवेशं कर्तुं शक्नुवन्ति । प्रणाली स्वयमेव उपयोक्तारं प्रमाणीकरणाधिकारिणं प्रति निर्देशयिष्यति यत् प्रमाणीकरणं कर्तुं प्राधिकरणं च प्राप्तुं शक्नोति, ततः पुनः मूल-अनुप्रयोगं प्रति पुनः निर्दिशति ।

उपसंहारे

अस्मिन् लेखे Spring Boot परियोजनायां एकं साइन-ऑन-समाधानं कथं एकीकृत्य भवति इति वर्णितम् अस्ति, OAuth2 इत्यस्य आधारेण सरलं उदाहरणविन्यासं प्रदाति, प्रमाणीकरणकेन्द्रस्य एकीकरणस्य विकल्पस्य उल्लेखः च कृतः अस्ति एतेषां पदानां माध्यमेन विकासकाः सुरक्षितं कुशलं च उपयोक्तृप्रमाणीकरणं प्राधिकरणकार्यं च सहजतया कार्यान्वितुं शक्नुवन्ति ।

Micro-earning Taoke System 3.0 इत्यस्य सम्पादकेन निर्मितम्, पुनर्मुद्रणकाले कृपया स्रोतः सूचयन्तु!