1
1
package cmf .commitField .global .security ;
2
2
3
- import cmf .commitField .domain .user .entity .CustomOAuth2User ;
4
- import cmf .commitField .domain .user .service .CustomOAuth2UserService ;
5
- import org .springframework .context .annotation .Bean ;
6
3
import org .springframework .context .annotation .Configuration ;
7
- import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
8
4
import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
9
- import org .springframework .security .config .annotation .web .configurers .AbstractHttpConfigurer ;
10
- import org .springframework .security .config .http .SessionCreationPolicy ;
11
- import org .springframework .security .core .context .SecurityContextHolder ;
12
- import org .springframework .security .oauth2 .core .user .OAuth2User ;
13
- import org .springframework .security .web .SecurityFilterChain ;
14
5
15
6
@ Configuration
16
7
@ EnableWebSecurity
17
8
public class SecurityConfig {
18
- private final CustomOAuth2UserService customOAuth2UserService ;
19
-
20
- public SecurityConfig (CustomOAuth2UserService customOAuth2UserService ) {
21
- this .customOAuth2UserService = customOAuth2UserService ;
22
- }
23
-
24
- @ Bean
25
- protected SecurityFilterChain config (HttpSecurity http ) throws Exception {
26
- // ๊ถํ ์ค์
27
- http
28
- .authorizeHttpRequests (auth -> auth
29
- .requestMatchers ("/actuator/**" ).permitAll () // actuator ์๋ํฌ์ธํธ ํ์ฉ
30
- .anyRequest ().authenticated () // ๊ทธ ์ธ ๋ชจ๋ ์์ฒญ์ ์ธ์ฆ ํ์
31
- );
32
-
33
- //๋ก๊ทธ์ธ ๊ด๋ จ ์ค์
34
- http
35
- .oauth2Login (oauth2 -> oauth2
36
- .loginPage ("/login" ) // ๋ก๊ทธ์ธ ํ์ด์ง ์ง์
37
- .successHandler ((request , response , authentication ) -> {
38
- // ์ธ์ฆ ์ ๋ณด๊ฐ SecurityContext์ ์ถ๊ฐ๋๋ ๊ฒ์ ๋ณด์ฅ
39
- SecurityContextHolder .getContext ().setAuthentication (authentication );
40
-
41
- CustomOAuth2User customUser = (CustomOAuth2User ) authentication .getPrincipal ();
42
-
43
- // ๋๋ฒ๊น
: authentication ์ ๋ณด ํ์ธ
44
- System .out .println ("Authentication: " + authentication );
45
- System .out .println ("Principal: " + authentication .getPrincipal ());
46
-
47
- if (authentication != null && authentication .getPrincipal () != null ) {
48
- //์ธ๊ฐ๊ฐ ์์ผ๋ฉด ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅ
49
- OAuth2User principal = (OAuth2User ) authentication .getPrincipal ();
50
- String username = principal .getAttribute ("login" );
51
-
52
- // ์ธ์
์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ถ๊ฐ
53
- request .getSession ().setAttribute ("user" , username );
54
-
55
- response .sendRedirect ("/" ); // ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ๋ฆฌ๋ค์ด๋ ํธ
56
- } else {
57
- // ์ธ์ฆ ์คํจ ์ ์ฒ๋ฆฌ
58
- response .sendRedirect ("/login?error=authenticationFailed" );
59
- }
60
- })
61
- )
62
- .sessionManagement (session -> session
63
- .sessionCreationPolicy (SessionCreationPolicy .IF_REQUIRED ) // ์ธ์
์ ์ฑ
์ค์
64
- .invalidSessionUrl ("/login?error=invalidSession" ) // ์ธ์
์ด ์ ํจํ์ง ์์ผ๋ฉด ์ด๋ํ URL
65
- .maximumSessions (1 ) // ํ๋์ ๊ณ์ ์ผ๋ก ํ ๋ฒ์ ๋ก๊ทธ์ธํ ์ ์๋๋ก ์ ํ
66
- .expiredUrl ("/login?error=sessionExpired" ) // ์ธ์
๋ง๋ฃ ํ ์ด๋ํ URL ์ค์
67
- );
68
-
69
- //๋ก๊ทธ์์ ๊ด๋ จ ์ค์
70
- http
71
- .logout (logout -> logout
72
- .logoutUrl ("/logout" ) // ๋ก๊ทธ์์ URL ์ค์
73
- .logoutSuccessUrl ("/" ) // ๋ก๊ทธ์์ ์ฑ๊ณต ํ ์ด๋ํ URL
74
- .invalidateHttpSession (true ) // ๋ก๊ทธ์์ ์ ์ธ์
๋ฌดํจํ
75
- .clearAuthentication (true ) // ์ธ์ฆ ์ ๋ณด ์ง์ฐ๊ธฐ
76
- .deleteCookies ("JSESSIONID" ) // ์ธ์
์ฟ ํค ์ญ์
77
- );
78
- http
79
- .csrf (
80
- AbstractHttpConfigurer ::disable // CSRF ๋ณดํธ ๋นํ์ฑํ
81
- );
82
-
83
- return http .build ();
84
- }
9
+ // private final CustomOAuth2UserService customOAuth2UserService;
10
+ //
11
+ // public SecurityConfig(CustomOAuth2UserService customOAuth2UserService) {
12
+ // this.customOAuth2UserService = customOAuth2UserService;
13
+ // }
14
+ //
15
+ // @Bean
16
+ // protected SecurityFilterChain config(HttpSecurity http) throws Exception {
17
+ // // ๊ถํ ์ค์
18
+ // http
19
+ // .authorizeHttpRequests(auth -> auth
20
+ // .requestMatchers("/actuator/**").permitAll() // actuator ์๋ํฌ์ธํธ ํ์ฉ
21
+ // .anyRequest().authenticated() // ๊ทธ ์ธ ๋ชจ๋ ์์ฒญ์ ์ธ์ฆ ํ์
22
+ // );
23
+ //
24
+ // //๋ก๊ทธ์ธ ๊ด๋ จ ์ค์
25
+ // http
26
+ // .oauth2Login(oauth2 -> oauth2
27
+ // .loginPage("/login") // ๋ก๊ทธ์ธ ํ์ด์ง ์ง์
28
+ // .successHandler((request, response, authentication) -> {
29
+ // // ์ธ์ฆ ์ ๋ณด๊ฐ SecurityContext์ ์ถ๊ฐ๋๋ ๊ฒ์ ๋ณด์ฅ
30
+ // SecurityContextHolder.getContext().setAuthentication(authentication);
31
+ //
32
+ // CustomOAuth2User customUser = (CustomOAuth2User) authentication.getPrincipal();
33
+ //
34
+ // // ๋๋ฒ๊น
: authentication ์ ๋ณด ํ์ธ
35
+ // System.out.println("Authentication: " + authentication);
36
+ // System.out.println("Principal: " + authentication.getPrincipal());
37
+ //
38
+ // if (authentication != null && authentication.getPrincipal() != null) {
39
+ // //์ธ๊ฐ๊ฐ ์์ผ๋ฉด ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅ
40
+ // OAuth2User principal = (OAuth2User) authentication.getPrincipal();
41
+ // String username = principal.getAttribute("login");
42
+ //
43
+ // // ์ธ์
์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ถ๊ฐ
44
+ // request.getSession().setAttribute("user", username);
45
+ //
46
+ // response.sendRedirect("/"); // ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ๋ฆฌ๋ค์ด๋ ํธ
47
+ // } else {
48
+ // // ์ธ์ฆ ์คํจ ์ ์ฒ๋ฆฌ
49
+ // response.sendRedirect("/login?error=authenticationFailed");
50
+ // }
51
+ // })
52
+ // )
53
+ // .sessionManagement(session -> session
54
+ // .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) // ์ธ์
์ ์ฑ
์ค์
55
+ // .invalidSessionUrl("/login?error=invalidSession") // ์ธ์
์ด ์ ํจํ์ง ์์ผ๋ฉด ์ด๋ํ URL
56
+ // .maximumSessions(1) // ํ๋์ ๊ณ์ ์ผ๋ก ํ ๋ฒ์ ๋ก๊ทธ์ธํ ์ ์๋๋ก ์ ํ
57
+ // .expiredUrl("/login?error=sessionExpired") // ์ธ์
๋ง๋ฃ ํ ์ด๋ํ URL ์ค์
58
+ // );
59
+ //
60
+ // //๋ก๊ทธ์์ ๊ด๋ จ ์ค์
61
+ // http
62
+ // .logout(logout -> logout
63
+ // .logoutUrl("/logout") // ๋ก๊ทธ์์ URL ์ค์
64
+ // .logoutSuccessUrl("/") // ๋ก๊ทธ์์ ์ฑ๊ณต ํ ์ด๋ํ URL
65
+ // .invalidateHttpSession(true) // ๋ก๊ทธ์์ ์ ์ธ์
๋ฌดํจํ
66
+ // .clearAuthentication(true) // ์ธ์ฆ ์ ๋ณด ์ง์ฐ๊ธฐ
67
+ // .deleteCookies("JSESSIONID") // ์ธ์
์ฟ ํค ์ญ์
68
+ // );
69
+ // http
70
+ // .csrf(
71
+ // AbstractHttpConfigurer::disable // CSRF ๋ณดํธ ๋นํ์ฑํ
72
+ // );
73
+ //
74
+ // return http.build();
75
+ // }
85
76
}
0 commit comments