얼마 전 회사에서 잘 사용하고 있던 LDAP 의 인증방식이 OpenSSL 로 변경되면서
작업을 진행하기 위해 학습한 내용을 정리해봅니다.
LDAP 이란?
LDAP(Lightweight Directory Access Protocol) 의 약자로, 인터넷 기반 디렉터리 서비스를 위한 "프로토콜" 입니다.
LDAP은 DAP(Directory Access Protocol ) 이라는 OSI 7계층 전체 레이어를 지원하는 프로토콜의 네트워크 부담을 최대한 줄인 버전인데요,
트리 구조로 데이터를 담아두기 때문에 계층구조를 가진 데이터를 관리할 때 주로 사용합니다.
DB와 비교하자면 NoSQL 쪽에 가깝다고 보시면 될 것 같습니다.
그리고 왜 LDAP을 사용하냐? 고 묻는다면
기업같은 대규모 조직에서 사용자나 주소록 등을 중앙집중화하여 관리하기에 쉬운 프로토콜이 LDAP 이기에 사용하며
LDAP 은 SSO(Single Sign On) 을 지원하여 기업 내의 여러 시스템들에서 하나의 ID/PW 로 인증을 하여 사용할 수 있게 하였습니다.
또한 Tree 구조를 사용하기 때문에 빠른 시간에 탐색이 가능하여
기업의 조직관리와 같이 READ 가 빈번하고 WRITE 가 적은 상황에서 SSO까지 지원하는 LDAP 의 사용이 최적이라고 할 수 있습니다.
SSO 란?
Single Sign-On(SSO)은 1회 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 인증 솔루션입니다.
SSO 를 사용하면 다수의 시스템에 하나의 ID/PW 로 인증을 하여 접근할 수 있기 때문에 아래와 같은 장점들이 있습니다.
- 암호 보안 강화 : 여러 시스템들에서 단순한 암호를 기억하고 관리하기보다 하나의 ID/PW 로 강화된 암호를 사용하는 것이 효율적입니다.
- 생산성 향상 : Application 개발 시 사용자 검증 프로세스를 간소화하여 생산성이 향상됩니다.
- 비용 절감
- 기타...
oAuth
oAuth(Open standard for authorization) 또한 한번의 인증절차로 다른 웹 서비스를 이용할 때 ID/PW 개인정보를 전송하지 않고도 자신의 접근 / 기타 권한을 부여받을 수 있는 인증방식입니다.
요즘 많이 보이는 여러 사이트에 접속할 때 "카카오로 시작하기", "google login", "Naver login" 등이 모두 oAuth 인증방식입니다.
LDAP - SSO - oAuth
사실 이렇게 공부를 했지만, 실제 저 프로토콜을 사용해 보지 않으니 확 와닿지는 않은데요,
나름대로 아래와 같이 정리해 보았습니다.
LDAP / SSO / oAuth 는 비슷하면서도 다른데,
- LDAP : LDAP server 에 있는 Directory 에 Access 하기 위한 프로토콜로 인증을 위해 사용자 정보에 Access 하는데 사용
- SSO : 여러 도메인에서 더이상의 로그인 없이 이용할 수 있도록 하는 서비스
- oAuth : 인증 프로토콜이며, 한번의 인증절차로 로그인한 뒤 특정 리소스에 대한 Access 권한을 부여받을 때 사용
사용자는 LDAP 프로토콜로 인증을 받고, LDAP 과 연동된 SSO 서비스를 이용할 때 oAuth 프로토콜의 방식을 이용해 인증받은 사용자가 다른 사이트의 Access 권한을 부여받아 여러 시스템에 접근할 수 있게 한다고 생각하면 됩니다.
다시 한 번 정리하자면, "oAuth 프로토콜을 사용하는 SSO 서비스를 LDAP 서버에서 인증을 위해 사용한다" 고 생각하면 이해가 좀 더 쉬울 것 같습니다.
추가 참고 자료
https://aws.amazon.com/ko/what-is/sso/
SSO란 무엇인가요? - Single Sign-On 설명 - AWS
예. SSO는 고급 ID 액세스 관리 솔루션입니다. 단일 로그온 솔루션을 구축하면 엔터프라이즈 애플리케이션 및 리소스에 대한 사용자 액세스 관리를 수행할 수 있습니다. SSO 솔루션을 사용하면 애
aws.amazon.com
아마존에서 SSO 에 대해 자세히 정리된 내용이 있어, 추가합니다.
위에서 SSO 와 oAuth 의 개념이 헷갈렸는데, SSO 의 유형 중 하나로 oAuth 가 있는 것으로 이해됐습니다.
위 아마존에서 설명하기로,
SSO 솔루션이 사용자 보안 인증 정보를 검증하고 인증하는 데 사용하는 다양한 표준 및 프로토콜이 있습니다.SAMLSAML 또는 Security Assertion Markup Language는 애플리케이션이 SSO 서비스와 인증 정보를 교환하는 데 사용하는 프로토콜 또는 규칙 집합입니다. SAML은 브라우저 친화적인 마크업 언어인 XML을 사용하여 사용자 식별 데이터를 교환합니다. SAML 기반 SSO 서비스는 애플리케이션이 사용자 보안 인증 정보를 시스템에 저장할 필요가 없으므로 더 나은 보안과 유연성을 제공합니다.OAuthOAuth 또는 Open Authorization은 애플리케이션이 암호를 제공하지 않고도 다른 웹 사이트의 사용자 정보에 안전하게 액세스할 수 있도록 하는 개방형 표준입니다. 애플리케이션은 사용자 암호를 요청하는 대신 OAuth를 사용하여 암호로 보호된 데이터에 액세스할 수 있는 사용자 권한을 얻습니다. OAuth는 API를 통해 애플리케이션 간의 신뢰 관계를 설정하며, 애플리케이션은 이를 통해 설정된 프레임워크에서 인증 요청을 보내고 응답할 수 있습니다.OIDCOpenID는 단일 사용자 보안 인증 정보 세트를 사용하여 여러 사이트에 액세스하는 방법입니다. 이를 통해 서비스 공급자가 사용자 보안 인증 정보를 인증하는 역할을 할 수 있습니다. 웹 애플리케이션은 인증 토큰을 서드 파티 ID 공급자에게 전달하는 대신, OIDC를 사용하여 추가 정보를 요청하고 사용자의 신뢰성을 검증합니다.KerberosKerberos는 둘 이상의 당사자가 네트워크에서 신원을 서로 검증할 수 있는 티켓 기반 인증 시스템입니다. 보안 암호화를 사용하여 서버, 클라이언트 및 키 배포 센터 간에 전송되는 식별 정보에 대한 무단 액세스를 방지합니다. |
'IT 이야기' 카테고리의 다른 글
jupyter notebook 에서 VScode(code-server) 사용하기 (0) | 2025.04.15 |
---|---|
[분산처리환경] 카프카 - 주키퍼 요약 정리 (0) | 2023.09.15 |
[보안] PKI(Public Key Infrastructure) 시스템을 활용한 TLS 통신(HTTPS, 공동인증서) (0) | 2022.12.20 |
공부에 대한 기록 (0) | 2022.06.01 |