728x90
반응형
Java Client 로 Keycloak API 사용하기
Keycloak 서버개발자 가이드문서를 참고하여 만든 자료입니다.
Keycloak API 접근권한 할당하기
위 사진을 참고하여 API 요청을 위한 관리자 계정에 필요한 권한을 할당해준다. (맨 아래 참고자료 첨부)
build.gradle
implementation group: 'org.keycloak', name: 'keycloak-admin-client', version: '17.0.1'
// Keycloak-admin-client 의존성인 resteasy-client 4.5.6 버전까지 취약점이 있어 아래 4개 의존성을 오버라이딩
한다.
implementation group: 'org.jboss.resteasy', name: 'resteasy-client', version: '4.5.7.Final'
implementation group: 'org.jboss.resteasy', name: 'resteasy-multipart-provider', version: '4.5.7.Final'
implementation group: 'org.jboss.resteasy', name: 'resteasy-jackson2-provider', version: '4.5.7.Final'
implementation group: 'org.jboss.resteasy', name: 'resteasy-jaxb-provider', version: '4.5.7.Final'
Java Client
// Keycloak 인스턴스 조회
private Keycloak getKeycloakInstance(){
Keycloak keycloak = null;
try {
keycloak = Keycloak.getInstance(
serverUrl, // ex: http:localhost:8080/auth
realm,
username, // realm-management 의 role 이 부여되어 있는 계정
password,
clientId);
return keycloak;
} catch (Exception e) {
log.error("Failed to create keycloak instance.");
if (keycloak = null && keycloak.isClosed()){
keycloak.close();
log.info("Closed the keycloak instance.");
}
throw e;
}
}
위 코드에서 Keycloak 인스턴스를 획득한 후 해당 객체를 디버깅해보면 원하는 API 정보를 확인해볼 수 있다. 아직 공식 가이드문서에서는 Java API 에 대한 정의를 찾지 못하여(URI 로 구성된 REST API 에 대한 정의는 아래 참고자료에 있다.) 디버깅을 해가며 API 를 찾아야했다.
참고자료
- https://www.keycloak.org/docs/latest/server_development/
- https://www.keycloak.org/docs-api/15.0/rest-api/index.html#_users_resource
- https://stackoverflow.com/questions/53283281/how-to-activate-the-rest-api-of-keycloak
- https://stackoverflow.com/questions/49511606/cannot-create-user-in-the-keycloak-getting-403-status
- https://ioansurariu.ro/2020/10/19/users-and-roles-management-using-keycloak-java-apis/
728x90
반응형
'IT > Java' 카테고리의 다른 글
Java 직렬화(Serialization) 와 역직렬화(Deserialization) (0) | 2021.07.14 |
---|