우리가 Keycloak를 설치하기전 몇가지 사항에 대해서 알고 넘어가야 합니다. 이녀석을 왜 쓰고는지는 알아야 하니까요. 사용에 용도는 다르겠지만 기초적인 사용에 대한 이유와 엔지니어로써 이것을 어디에 붙여 쓰는지는 확인해 보고 넘어갔으면 합니다.
keycloak를 접하다 보면 SSO, SMAL 이란 단어가 많이 나옵니다.
SSO는 Single Sign-On의 약자로, 여러 서비스나 애플리케이션에 대해 한 번의 로그인 과정만으로 접근 권한을 부여하는 인증 방식입니다. SSO를 통해 사용자는 여러 서비스에 대해 별도의 로그인 과정을 거치지 않아도 되며, 이는 사용자 편의성을 높이고 시간을 절약하는 장점을 가집니다.
SSO는 주로 다음과 같은 프로토콜 및 기술을 사용하여 구현됩니다
1. OAuth 2.0: 인터넷 서비스 공급자와 사용자를 연결하는 개방형 인증 프로토콜로, 사용자의 서비스에 대한 접근 권한을 안전하게 부여합니다.
2. OpenID Connect: OAuth 2.0 프로토콜을 기반으로 한 인증 프로토콜로, 사용자의 인증 정보를 안전하게 교환할 수 있는 방법을 제공합니다.
3. SAML (Security Assertion Markup Language): XML 기반의 표준 인증 및 인가 데이터 교환 프로토콜로, 사용자의 인증 정보를 교환하고 인증에 사용합니다.
우리는 우선 keycloak의 SAML2.0을 활용한 사항을 진행해 볼것입니다.
설치
https://www.keycloak.org/guides#getting-started
위 링크에서 설치 방법에 대한 자세한 사항이 나옵니다.
저는 여기서 keycloak를 설치함에 있어 조금 까다로운 사항이 있었는데 그걸 공유 하기 위함 입니다.
OpenJDK 버전으로 사용할 예정입니다.
https://www.keycloak.org/getting-started/getting-started-zip
1. openjdk 설치
apt update
apt-get install openjdk-11-jdk
2. Keycloak Download
wget https://github.com/keycloak/keycloak/releases/download/21.0.1/keycloak-21.0.1.zip
위와 같은 과정을 마쳤으면 이제 keycloak를 실행해 줄 것 입니다.
다음과 같이 keycloak를 실행 합니다
cd keycloak/bin
kc.sh start-dev
위와 같이 설정하면 start-dev 실행으로 개발자 모드로 실행하게 됩니다.
그리고 localhost 사용시에는 문제없이 실행이 되며, 아이디와 패스워드를 생성하는 창으로 넘어 갈 수 있습니다. 하지만 원격지에서 접속하려 하면 아이디와 패스워드를 환경변수에 넣어서 실행해야 합니다. 다음 과정을 같이 보겠습니다.
export KEYCLOAK_ADMIN=test
export KEYCLOAK_ADMIN_PASSWORD=test
# env 확인
env | grep KEYCLOAK_ADMIN
위와 같이 설정 후 다시 실행해 줍니다.
그럼 다음과 같은 페이지를 보실 수 있습니다. 이제 접속해야 하는데 이 페이지 역시 http는 잘 되지 않음으로 인증서가 없다면, 만드는 형태로 하여 진행합니다.
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=아이피나 dns 넣어주세요"
위와같이 key를 생성 해 줍니다. 그리고 다시 keycloak를 실행해 줍니다.
./kc.sh start-dev --https-certificate-file "cert.pem" --https-certificate-key-file "key.pem"
이렇게 해야 비로서 정상적인 페이지에 도달 할 수 있습니다.
중요사항
1. 환경변수를 이용하여, 아이디와 패스워드를 설정한다.
2. http로 접근을하기 쉽지 않기때문에, pem으로 사설 인증키라도 만들어서 접속한다.
3. keycloak은 docker를 활용한 사용법이 절대적으로 많은 것 같아 서버 설치 타입으로 진행 하였다.
이상
'서버인프라' 카테고리의 다른 글
ssh execute command (0) | 2023.01.30 |
---|---|
Linux ZIP 사용 하기 (2) | 2023.01.27 |
git clone 오류 (0) | 2022.11.29 |
Jenkins 설치 (0) | 2022.11.28 |
PowerDNS Recursor & Dnsdist (2) | 2022.11.23 |
댓글