프로젝트 중 Keycloak 사용에 많은 시간을 보냈다...
Keycloak에 대한 자료도 부족하고, 사용하는 API별로 정리돼있는 것 중 한국어로 돼있는 건 더 적었다
저처럼 뻘짓하지 말라고 올리는 건데, 보는 사람이 있을지는 모르겠네...
현재 작성된 API는 Keycloak을 구성한 후 CRUD 작업들을 정리했다.
- keycloak 토큰 생성 -
Post : { keycloak 주소 }/realms/master/protocol/openid-connect/token
- param
'client_id' : 'admin-cil',
'client_secret': keyclock 페이지의 시크릿 키
'grant_type': 'client_credentials'
'client_secret'를 제외하고는 다 그대로 사용하면 되고, keycloak 시크릿키는 keycloak 페이지 master realm의 clients 중 admin-cil의 credentials 항목에서 확인할 수 있다.
Keycloak Api를 사용 하기 위해서는 token이 필요하다. 위의 코드를 사용하여 token 값을 받고 Authorization에 Bearer Token Type으로 넣는다.
- keycloak 사용자 검색 -
Get : { keycloak 주소 }/admin/realms/{ realm 명}/users
위의 API는 현재 keycloak 주소의 realm안에 등록된 Users 명단을 배열 형태로 출력해준다.
- keycloak role 검색 -
Get: { keycloak 주소 }/admin/realms/{ realm 명} /roles
keycloak role 검색 API을 사용할 경우 keycloak에 등록된 roles에 대한 모든 정보가 출력된다.
- keycloak 사용자 추가 -
Post: { keycloak 주소 }/admin/realms/{ realm 명}/users
- Body
{
enabled: true,
username: {username},
email: {email},
credentials: [
{
type: 'password',
value: {password},
temporary: true,
}
]
}
위의 방식으로 Body에 넣을 시 사용자를 추가할 수 있다.
- keycloak 사용자 수정 -
Put: { keycloak 주소 }/admin/realms/{ realm 명}/users/{ userId }
- Body
{
username: {username},
email: {email},
credentials: [
{
type: 'password',
value: {password},
temporary: true,
}
]
}
사용자 수정을 위해서는 사용자의 id가 필요하다. 사용자 검색을 통해 id를 찾고, 그 사용자의 id를 사용하여 정보를 수정할 수 있다.
- keycloak 사용자 삭제 -
Delete: { keycloak 주소 }/admin/realms/{ realm 명}/users/{ userId }
api만 입력하더라도 keycloak 사용자를 쉽게 삭제할 수 있다.
- keycloak 사용자 Role 추가 -
Post: { keycloak 주소 }/admin/realms/{ realm 명}/users/{ userId }/role-mappings/realm
- Body
role 정보 데이터
role 정보 데이터는 roles를 확인하는 api를 통해 확인할 수 있다.
- keycloak 사용자 Role 삭제 -
Delete: { keycloak 주소 }/admin/realms/{ realm 명}/users/{ userId }/role-mappings/realm
- Body
role 정보 데이터
role 정보 데이터는 roles를 확인하는 api를 통해 확인할 수 있다.
keycloak에서 제공하는 여러 api가 존재하지만, 가장 기본적인 CRUD 작업에 대해서만 정리를 했다...
한국어로 된 정보도 몇개 없고, 조금씩 틀려서 오래 걸렸다...
사용할 사람이 있으면 참고해주세요