rhsso 대시보드에서 자격증명을 생성할 때 client id 만 입력할 수 있게되어있다.
그래서 API로 생성해야만 client secret 을 입력할 수 있는데, 어제 2시간동안 헤매이다 찾아냈다.
참고로 필자는 rhsso 7.4 버전을 이용하고있다
먼저 헤맨 이유는..
평소처럼 구글링을 통해 redhat 사이트로 접근하여
base path / new client uri 를 확인하고 호출했더니 404 error..
이것저것 계속 만져봤으나 페이지를 찾을 수 없다는 응답만 오는 것이였다..
지속된 API 체크로 슬슬 포기할 무렵...
clients-registrations 라는 또다른 uri를 발견하고 비로소 성공하게 되었다.
그럼 이제 client 를 API로 생성해보자!!!!!!!!!
API 접근을 위한 자격증명 세팅
rhsso API 접근을 하려면 access token이 필요하기 때문에,
접근토큰 발급을 위한 자격증명을 생성하고 해당 클라이언트가 자격증명을 관리할 수 있는 manage-clients Role을 부여해주어야한다.
대시보드>Realm선택>Clients>생성한 자격증명>Service Account Roles에서
Client Roles>realm-management 선택 후 manage-clients Role을 추가해준다.
Access Token 발급
위에서 생성한 자격증명으로 접근토큰을 발급받자.
URL : https://<sso-url>/auth/realms/<Realm Name>/protocol/openid-connect/token
Method : POST
data :
- client_id : 3scale-api
- client_secret : <생성된 secret>
- scope : <비어둠>
- grant_type : client_credentials
을 입력한뒤 요청하면 접근토큰이 발급된다.
curl --request POST 'https://<sso-url>/auth/realms/<realm-name>/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=3scale-api' \
--data-urlencode 'client_secret=<생성된 secret>' \
--data-urlencode 'scope=' \
--data-urlencode 'grant_type=client_credentials'
rhsso API 요청
자 드디어 API 요청부분이다.
제일 궁금했던 URL은 /auth/realms/<realm-name>/clients-registrations/default 이다.
메소드는 당연 POST이고,
헤더에는 Content-Type은 Application/json을 넣어주고
2에서 발급한 접근토큰을 넣어준다.(Authorization: Bearer eyJ~)
data는 생성시 나오는 key값으로 판단하였다.
{
"clientId":"joon95",
"secret":"tistory.com",
"redirectUris":[
"https://joon95.tistory.com"
]
}
이제 발급을 해보자!!
성공적인 리턴이 왔고,
내가 원하는 secret 데이터가 들어간 모습을 확인할 수 있었다.!
긴 글 읽어주셔서 감사합니다.
'엔지니어링 > 인증' 카테고리의 다른 글
[MTLS] Mutual TLS 상호인증 (12) | 2022.09.10 |
---|---|
[RHSSO] Authorization Code 방식 (0) | 2022.09.06 |
[RHSSO] 리프래시 토큰 보관 (0) | 2022.09.06 |
[RHSSO] 설치부터 셋팅까지 (2) | 2022.09.06 |