0. 프로젝트 소개(Spring Security) 및 Security에 대하여
1. User Entity 생성(Spring Security)
2. User 회원가입 (Spring Secureity)
3.Jwt의 사용 이유 (Spring Security)
4. Authorization(인증)
- 4-0 Authorization(인증) - 프로세스 설명
- 4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성
- 4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성
- 4-3 Authentication(인증) - CorsFilter(선택사항)
- 4-4 Authentication(인증) - SecurityConfig
5. Authorization(인가)
- 5-1 Authorization(인가) - Jwt 인가 관련 에러 처리
- 5-2 Authorization(인가) - Jwt 인가 서비스 로직 추가
- 5-3 Authorization(인가) - AuthorizationFilter 생성
- 5-4 Authorization(인가) - SecurityConfig에 인가 관련 method 추가
6. OAuth
User(Entity) 생성
@Entity
@NoArgsConstructor
@Getter
@Builder
@AllArgsConstructor
public class User {
@Id
@GeneratedValue
@Column(unique = true, nullable = false, name = "USER_ID")
private long userId;
@Column(unique = true, nullable = false, name = "EMAIL")
private String email;
@Column(name = "PASSWORD")
private String password;
@Column(name = "NICKNAME")
private String nickname;
@Column(name = "PROFILE_URL")
private String profileUrl;
@Column(name = "REFRESH_TOKEN", length = 1000)
private String refreshToken;
@Builder.Default
@Column(name = "USER_ROLE")
private String userRole = "ROLE_USER";
@Enumerated(EnumType.STRING)
@Column(name = "SOCIAL_TYPE")
private SocialType socialType;
@Column(name = "socialId")
private String socialId; // 로그인한 소셜 타입의 식별자 값 (일반 로그인인 경우 null)
// refreshToken 재설정
public void updateRefreshToken(String refreshToken){
this.refreshToken = refreshToken;
}
// 비밀번호 암호화
public void passwordEncode(PasswordEncoder passwordEncoder){
this.password = passwordEncoder.encode(this.password);
}
}
Annotation
@Build.Default
- Default값을 설정하고 싶을 때 @Builder를 사용하지 않고 생성자 형태로 구현한다면 해당 Annotation을 사용하지 않아도 되지만 Builder사용시 사용해야하는 annotation
@Enumerared(EnumType.STRING)
- Enum사용시 값을 String 형태로 입력하고 싶다면 사용해야하며 해당 Annotaion을 사용하지 않는다면 문자열이 아닌 Int형태로 들어가기 때문에 Enum의 순서가 입력됨
※권한을 String 형태로 구현한 이유
- authorization(인가)를 구현하는 여러가지 방식이 있지만 UserDetails 구현 시 return 타입이 collection이기 때문에 String으로 구현했으며 해당 함수는 UserDetails를 구현 시 자세하게 설명할 예정
Method
UpdateRefreshToken
- Jpa에서는 Setter사용을 지양하기 때문에(추적이 어렵기 때문) update 함수를 만들어 구현
passwordEncode
- 패스워드를 암호화 하기 위해 사용하는 메소드
PasswordEncoder
@Configuration
public class CommonConfig {
@Bean
public BCryptPasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
- BCryptPasswordEncoder 클래스를 Bean등록해준다.
'SpringBoot Security' 카테고리의 다른 글
4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성 (0) | 2023.07.09 |
---|---|
4-0 Authorization(인증) - 프로세스 설명 (0) | 2023.07.08 |
3. Jwt의 사용 이유 (Spring Security) (0) | 2023.06.28 |
2. User 회원가입 (Spring Secureity) (0) | 2023.06.27 |
0. 프로젝트 소개(Spring Security) 및 Security에 대하여 (0) | 2023.06.24 |