티스토리 뷰
728x90
반응형
PasswordEncoderFactories.createDelegatingPasswordEncoder()
`PasswordEncoderFactories.createDelegatingPasswordEncoder()`는 Spring Security에서 제공하는 **동적 비밀번호 인코더**입니다.
다양한 암호화 방식을 한 번에 지원할 수 있는 `DelegatingPasswordEncoder` 객체를 생성합니다.
이 객체는 여러 종류의 `PasswordEncoder`를 관리하고, 암호화 방식에 따라 적절한 `PasswordEncoder`를 선택하여 사용할 수 있도록 해줍니다.
### 동작 방식
`DelegatingPasswordEncoder`는 비밀번호에 특정 접두사를 붙여 암호화 방식을 나타냅니다. 기본적으로 `bcrypt` 알고리즘이 사용되며,
다른 알고리즘을 사용할 경우에는 접두사를 붙여 지정할 수 있습니다.
`createDelegatingPasswordEncoder()`는 기본적으로 다음과 같은 `PasswordEncoder`를 지원합니다:
- `{bcrypt}`: `BCryptPasswordEncoder`
- `{noop}`: 인코딩을 하지 않음 (`NoOpPasswordEncoder`)
- `{pbkdf2}`: `Pbkdf2PasswordEncoder`
- `{scrypt}`: `SCryptPasswordEncoder`
- `{sha256}`: `StandardPasswordEncoder`
비밀번호 앞에 `{암호화 알고리즘}`을 붙이면 `DelegatingPasswordEncoder`가 해당 인코더를 사용해 비밀번호를 처리합니다.
### 예시
1. **생성 및 사용**
```java
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
public class PasswordEncodingExample {
public static void main(String[] args) {
PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
// 비밀번호 인코딩
String encodedPassword = passwordEncoder.encode("myPassword");
System.out.println("Encoded Password: " + encodedPassword);
// 비밀번호 매칭
boolean matches = passwordEncoder.matches("myPassword", encodedPassword);
System.out.println("Matches: " + matches);
}
}
```
2. **인코딩 결과 예시**
```plaintext
Encoded Password: {bcrypt}$2a$10$E3T9z3Hr5bq3N5b2JNJ2pum8kDFadSg3Y...
```
`createDelegatingPasswordEncoder()`로 생성된 `PasswordEncoder`는 기본적으로 `bcrypt`를 사용하여 암호화하며,
결과에는 `{bcrypt}` 접두사가 붙습니다.
3. **다양한 암호화 방식 사용**
```java
String bcryptPassword = "{bcrypt}$2a$10$...";
String noopPassword = "{noop}myPassword";
boolean matchesBcrypt = passwordEncoder.matches("myPassword", bcryptPassword);
boolean matchesNoop = passwordEncoder.matches("myPassword", noopPassword);
```
이처럼 `createDelegatingPasswordEncoder()`를 사용하면 **여러 암호화 방식의 비밀번호**를 쉽게 관리할 수 있으며,
Spring Security가 기본 제공하는 인코딩 알고리즘들을 손쉽게 사용할 수 있습니다.
728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- jstl(java standard tag library)
- 인텔리제이(intellij)
- 람다식(lambda expression)
- async
- System.Diagnostics
- MainActor
- 스프링 시큐리티(spring security)-http basic 인증
- 특정 문자를 기준으로 자르기
- 진수 변환
- 스프링 프레임워크(spring framework)
- java.sql
- 문자 자르기
- error-java
- java-개발 환경 설정하기
- 스프링 프레임워크(spring framewordk)
- REST API
- java web-mvc
- nl2br
- await
- java 키워드 정리
- system.io
- jsp 오픈 소스
- 표현 언어(expression language)
- 스프링 시큐리티(spring security)
- 메이븐(maven)
- In App Purchase
- jstl(java standard tag library)-core
- .submit()
- 제품 등록
- 상품 등록
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함