반응형

rhsso 대시보드에서 자격증명을 생성할 때 client id 만 입력할 수 있게되어있다.

그래서 API로 생성해야만 client secret 을 입력할 수 있는데, 어제 2시간동안 헤매이다 찾아냈다.

참고로 필자는 rhsso 7.4 버전을 이용하고있다

 

먼저 헤맨 이유는..

평소처럼 구글링을 통해 redhat 사이트로 접근하여

base path check
new client api uri

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'

access token 발급

 

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
복사했습니다!