NAVER Cloud

[네이버클라우드] Ncloud Single Sign-On(SSO) / keycloak 연동 - 2. External IdP login 설정

한크크 2024. 6. 13. 15:13

keycloak 설치 방법은 아래 포스팅 참고

2024.06.12 - [NAVER Cloud] - [네이버클라우드] Ncloud Single Sign-On(SSO) / keycloak 연동 - 1. keycloak 설치

 

Ncloud Single Sign-On 에 keycloak 을 연동하는 방법은 네이버클라우드 사용자 가이드에도 설명되어 있으나 keycloak 1.20 버전 이후로 UI 및 메뉴명이 일부 변경되었다. 1.20 이하 버전을 사용하는 경우는 네이버클라우드 사용자 가이드를 참고하시길.. 

https://guide.ncloud-docs.com/docs/sso-keycloak

 

1. Ncloud Single Sign-On Tenant 생성 

Ncloud 콘솔 -> Ncloud Single Sign-On -> Tenant -> +Tenant 생성을 클릭하면 Tenant 생성 동의 후 Tenant 를 생성할 수 있다.

Ncloud Single Sign-On 은 Region 상품이라 모든 Region 에서 사용 가능하며 계정 별 하나의 Tenant 만 생성할 수 있다. 

 

2. Ncloud Single Sign-On 에 External IdP 정보 등록

1. Keycloak realm metadata 복사

Keycloak -> Configure -> Realm settings 로 이동하여 General 탭에 Endpoints 에서 SAML 2.0 Identity Provider Metadata를 클릭하면 새창에서 Metadata 정보가 조회된다.

2. Ncloud Single Sign-On 에 External IdP 등록

복사한 Metadata 를 Ncloud 콘솔 -> Ncloud Single Sign-On -> Tenant 메뉴에서 External IdP 등록 화면의 Metadata 필드에 붙여넣기 하면 자동으로 필요한 항목들이 입력된다. 

metadata 필드에 붙여넣기 후 하단에 저장 버튼을 누르면 아래 필드의 값이 자동으로 입력된다.

3. Service Provider Metadata 다운로드

Ncloud Single Sign-On -> Tenant -> External IdP Metadata 에서 Service Provider Metadata 다운로드

 

3. Keycloak 인증 설정

1. client 생성

Keycloak -> Clients -> Import Clients 클릭하여 Browse 버튼을 눌러 위에서 다운로드 받은 Service Provider Metadata 파일 업로드하면 Client ID 정보와 Client Protocol 정보가 자동으로 입력된다.

 

2. Assertion Consumer Service (ACS) URL 정보를 입력

Ncloud Single Sign-On -> Tenant -> External IdP Metadata 에서 조회되는 Assertion Consumer Service (ACS) URL 을 Keycloak -> Clients -> General -> Master SAML Processing URL 에 입력해준다. (1.20 버전 이하에서는 Client SAML Endpoint 부분이 1.20 이후부터 Master SAML Processing URL 로 변경된 것 같다.)

 

4. Keycloak Attribute Mapper 설정

1. Keycloak 사용자 속성 정보 정의

Keycloak -> Client -> 위에서 등록한 Ncloud Client 선택 -> Client Scopes 탭으로 이동하여 자동 등록된 Ncloud client scope 선택하여 Configure a new mapper 버튼을 클릭하면 mapper 를 선택할 수 있다.

여기서 User Property 선택하면 mapper 를 등록할 수 있는 Add mapper 페이지로 이동할 수 있다. 

 FirstName, LastName, Email 에 대한 속성정보를 생성해준다. (이 3개가 꼭 필요한지는 모르겠으나.. Ncloud 가이드에 안내된 내용과 동일하게..;;)

 

5. Keycloak 사용자 추가

1. user 추가 

Keycloak -> Users -> Add user 버튼 클릭

Email 필드가 필수가 아니지만 Ncloud Single Sign-On 서비스에서 email 을 NameID 로 인식하기 때문에 반드시 입력해야 한다. 

2. User password 설정

User details -> Credentials tab 선택 후 패스워드를 입력한다. 

Temporary 를 활성화 하면 사용자가 첫번째 로그인할 때 변경해야한다. 

 

6. Ncloud Single Sign-On 에 SSO User 생성

1. user 추가

Keycloak 에 생성한 user 에 대해 Ncloud Single Sign-On 에도 user 를 생성해주어야 한다.

Ncloud Single Sign-On -> External IdP login -> Users 에서 user 생성

Keycloak 에서 생성한 user 는 Ncloud 의 subaccount 와는 맵핑되지 않고 Root 계정과 맵핑된다. 

keycloak 에 추가한 user 의 email 주소를 아이디로 입력한다. 해당 계정으로 콘솔에도 접근하고 api 사용도 할 예정이므로 접근 유형에 두개 다 체크해주고, 하단에 Profile 부분은 IdP 연동 시 자동으로 업데이트 될 수 있으므로 입력하지 않아도 된다. 

 

2. Permission Sets 설정

sso user 가 콘솔이나 api 를 통해 접근할 수 있는 리소스 정책을 생성한다. 여기서는 모든 권한을 줄 예정이라 NCP_INFRA_MANAGER 정책을 부여한다.

 

3. Assignments 생성

생성한 Permission Sets 를 Root 계정에 할당해 준 다음 생성한 Assignment 상세에 들어가서 sso user 를 추가해준다.

 

7. Ncloud Single Sign-On 사용자 속성 맵핑 설정

1. Ncloud Single Sign-On Attribute Mapper 설정

Ncloud Single Sign-On-> Tenant -> External IdP login 하단에 사용자 Profile 관리 항목 Attribute Mapper 선택하여 사용자 Profile 관리 페이지로 이동한다. 

keycloak 에서 설정한 email, lastname, firstname 부분을 설정한다. 

 

8. 연동 확인

Ncloud Single Sign-On-> Tenant -> External IdP login 에서 보여주는 Login URL 로 이동한다. 

keycloak 유저에 설정한 이름 또는 Email 로 로그인하면 패스워드 변경하라고 나온다. 

로그인 후 아래와 같이 페이지가 조회되면 정상적으로 연동되었다고 볼 수 있다.  ^^ 콘솔 버튼을 누르면 콘솔로 이동하고 API 접근을 클릭하면 API key 발행 화면으로 이동한다. 

 

API 접근을 위해 access / secret key 를 발급받는다.

반응형