728x90
반응형
1. 서론
어제에 이어 계속해서 번역작업을 진행해보도록 하겠습니다. 어제 내용을 잠깐 복습해보면, SPI라는 것을 이용하면, Keycloak과 기존 사용자 DB를 연동하여 이용할 수 있다고 하였습니다. UserStorageProvider를 구현하고, UserStorageProviderFactory 를 구현해주어야 한다고 했습니다. 저번시간에는 UserStorageProvider에 대해 집중 탐구해보았으니, 오늘은 Factory에 대해 탐구해보겠습니다.
2. 본론
2.5.2. Provider Factory Implementation
public class DemoUserStorageProviderFactory implements UserStorageProviderFactory<DemoUserStorageProvider> {
public static final String PROVIDER_NAME = "demo-user-provider";
@Override
public String getId() {
return PROVIDER_NAME;
}
}
먼저 DemoUserStorageProviderFactory 클래스를 구현할 때 템플릿 매개 변수로 구체적인 Provider 클래스 타입을 지정해야 합니다. 앞에서 정의한 공급자 클래스를 지정합니다. <DemoUserStorageProvider>
**템플릿 매개 변수를 지정하지 않으면 공급자가 작동하지 않습니다. 런타임은 공급자가 구현하는 기능 인터페이스를 확인하기 위해 클래스 내성을 수행합니다.
getId() 메서드는 런타임에서 팩토리를 식별합니다. 또 사용자 스토리지 제공자를 realm에서 user Federation 탭을 클릭할 때 보여지도록 하는 문자열이기도 합니다.
7.5.2.1. Initialization
private static final Logger logger = Logger.getLogger(PropertyFileUserStorageProviderFactory.class);
protected Properties properties = new Properties();
@Override
public void init(Config.Scope config) {
InputStream is = getClass().getClassLoader().getResourceAsStream("/users.properties");
if (is == null) {
logger.warn("Could not find users.properties in classpath");
} else {
try {
properties.load(is);
} catch (IOException ex) {
logger.error("Failed to load users.properties file", ex);
}
}
}
@Override
public PropertyFileUserStorageProvider create(KeycloakSession session, ComponentModel model) {
return new PropertyFileUserStorageProvider(session, model, properties);
}
728x90
반응형
'Dev' 카테고리의 다른 글
11. 기술면접 전 보고가면 좋은 내용 공유 (0) | 2021.04.06 |
---|---|
10. [자바] 자바 개발자 면접 질문 정리 (0) | 2021.04.02 |
8. [SSO] Keycloak User Storage SPI 번역해보기 (0) | 2020.10.12 |
7. [SSO] Keycloak Default DB 변경해보기 (2) | 2020.10.08 |
6. [SSO] Keycloak & Springboot 적용기 - 3 (0) | 2020.09.28 |