구글 소셜 로그인
1. Google 클라우드 플랫폼 접속
2. API 및 서비스 => 사용자 인증 정보
3. 구글 프로젝트 생성
4. +사용자 인증 정보 만들기 OAuth 클라이언트 ID
5. 동의 화면 구성 선택 => 외부 설정 => 애플리케이션 이름 지정 ( 로그인 시도할때 보이는 화면 ) => API 범위
...email, ...profile, ...openid 설정 ( 위에 3개 )
6. 애플리케이션 유형 => 웹애플리케이션 설정
7. 승인된 리디렉션 URI => URI 지정 ( http://localhost:8989/login/oauth2/code/google ) 8989 프로젝트 서버 주소
8. 생성된 클라이언트 ID, 보안비밀번호 확인
9. build.gradle에 라이브러리 추가 ( implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' )
10. application-oauth.properties생성 추가 =>
#생성된 클라이언트 아이디
spring.security.oauth2.client.registration.google.client-id= 생성 된 클라이언트 ID 넣기
#생성된 클라이언트 비밀번호
spring.security.oauth2.client.registration.google.client-secret=생성 된 클라이언트 보안 비밀번호 추가
spring.security.oauth2.client.registration.google.scope=email
11. application.properties => spring.profiles.include=oauth 추가
12. SecurityConfig 클래스 추가 =>
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((auth) -> {
// auth.antMatchers("/sample/all").permitAll();
// auth.antMatchers("/sample/member").hasRole("USER");
auth.antMatchers("/h2-console/**").permitAll();
});
// http.authorizeRequests()
// .antMatchers("/h2-console/**").permitAll();
http.csrf()
.ignoringAntMatchers("/h2-console/**")
.and().headers().frameOptions().sameOrigin(); // 여기!
http.formLogin();
http.csrf().disable();
http.logout(logout -> logout
// 로그아웃 요청을 처리할 URL 설정
.logoutUrl("/logout")
// 로그아웃 성공 시 리다이렉트할 URL 설정
.logoutSuccessUrl("/login")
// 로그아웃 핸들러 추가 (세션 무효화 처리)
.addLogoutHandler(((request, response, authentication) -> {
HttpSession session = request.getSession();
session.invalidate();
}))
// 로그아웃 성곤 핸들러 추가 (리다이렉션 처리)
.logoutSuccessHandler(((request, response, authentication) ->
response.sendRedirect("/login")))
// 로그아웃 시 쿠키 삭제 설정 (예: "remember-me" 쿠키 삭제)
.deleteCookies("remember-me")
);
http.oauth2Login().successHandler(successHandler());
http.rememberMe().tokenValiditySeconds(60*60*24*7).userDetailsService(userDetailsService);
return http.build();
}
1. build.gradle 추가
runtimeOnly 'com.mysql:mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'
implementation 'org.springframework.boot:spring-boot-starter'
runtimeOnly 'mysql:mysql-connector-java'
2. application.properties 추가
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/security?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=security
spring.datasource.password=security
'코드 정리' 카테고리의 다른 글
GitHub_Team (1) | 2023.11.25 |
---|---|
Vue.js 실전_ 연습 순서 (0) | 2023.11.08 |
Vue.js basic (0) | 2023.11.01 |
local=> Git (0) | 2023.11.01 |
파이썬 기초_1 (1) | 2023.10.24 |