IDP(Identity Provider)
: 사용자가 웹사이트나 앱에 로그인할 때, 그 사용자가 누구인지 확인해 주는 시스템이다.
쉽게 말해, IDP는 사용자의 신원을 증명해 주는 역할을 한다.
예를 들어, 어떤 웹사이트에서 "Google 계정으로 로그인" 버튼을 눌렀다고 가정해 보자. 그러면 Google이 사용자의 신원을 확인하고, 해당 웹사이트에 "이 사람은 인증된 사용자입니다"라고 알려준다. 이때 Google이 바로 IDP의 역할을 하는 것이다.
OAuth는 IDP와 다르게, 인증(Authentication)이 아니라 권한 부여(Authorization)를 담당하는 프로토콜이다.
쉽게 말해, OAuth는 사용자가 특정 애플리케이션이 자신의 데이터에 접근할 수 있도록 허용하는 데 초점을 맞춘다.
| 비교 항목 | IDP (Identity Provider) | OAuth (Open Authorization) |
|---|---|---|
| 목적 | 사용자의 신원을 확인 (로그인) | 애플리케이션이 사용자 데이터에 접근할 권한 부여 |
| 사용 예시 | Google 계정 로그인, SSO | Google이 사용자 대신 YouTube API에 접근 허용 |
| 역할 | 인증 및 사용자 관리 | 인증은 수행하지 않고, 인증된 사용자에 대한 권한 부여 |
| 대표 프로토콜 | SAML, OpenID Connect (OIDC) | OAuth 2.0 |
| 로그인 기능 포함 여부 | 포함됨 | 포함되지 않음 (OIDC 필요) |
즉, IDP는 "누구인지"를 확인하고, OAuth는 "무엇을 할 수 있는지"를 결정하는 차이가 있다.
| 비교 항목 | Java Controller + DB 로그인 | IDP 사용 |
|---|---|---|
| 인증 방식 | 직접 DB에서 사용자 확인 | IDP가 인증 담당 |
| 보안 수준 | 개발자가 직접 관리 | 보안 전문가들이 설계한 검증된 시스템 |
| SSO 지원 | ❌ | ✅ |
| MFA 지원 | 직접 구현해야 함 | 기본 제공 (OTP, 지문, 보안 키 등) |
| 유지보수 | 직접 개발 및 유지보수 필요 | 외부 서비스 활용 가능 |
| 확장성 | 개별 서비스마다 인증 구현 필요 | 여러 서비스에서 쉽게 인증 가능 |
| 표준 준수 | 개발자가 직접 구현 필요 | SAML, OAuth, OIDC 같은 표준 지원 |
- 보안성 강화
- SSO 및 MFA 같은 기능을 쉽게 추가 가능