OpenID, OIDC(OpenID Connect)
개념
- 비영리기관인 OpenID Foundation에서 추진하는 개방형 표준 및 분산 인증 프로토콜
- OpenID 1.0 -> OpenID 2.0 -> OpenID Connect 순서로 발전
- OpenID 1.0과 2.0은 더 이상 사용하지 않는 사양으로 명시됨
- 인증(Authentication) 자체에 목적
- OpenID를 제공하는 웹사이트에서 사용자는 모두 각자 계정을 만들고 관리할 필요없이 자신이 신뢰하는 OpenID 서비스 제공자(구글, 카카오 등)가 제공하는 OpenID 인증 서비스 하나만을 이용하여 인증
- OAuth 2.0을 기반으로 한 통합 인증 시스템 및 프로토콜
- OAuth 2.0의 위에 추가되는 Layer로, OAuth 2.0과 함께 사용되어 사용자의 정보를 인증하고 안전히 관리하며 권한 부여
- 사용자의 ID를 인증하기 위해 ID Token(사용자 정보에 접근하기 위한 토큰) 개념 사용
Flow
- Client가 사용자의 정보를 받아오기 위해 Authorization Server에 Authorization Code, Client ID, Client Secret(암호) 전송
- Client는 Authorization Endpoint에 전송하는 Request Parameter에 response_type을 반드시 명시해야 함
- response_type은 code 혹은 token 타입 지정 가능, OIDC에서는 id_token 타입으로 지정, scope를 openid로 설정해야 ID Token이 발행됨 - Authorization Server는 Client에게 권한 부여를 위한 Access Token과 사용자 인증을 위한 ID Token 전송
OIDC Token
- End-User들에 대한 세부적인 정보가 저장되어 있는 토큰으로, 인증에 사용됨
- JWT 형태로 구현됨
- Header, Payload, Signature가 함께 인코딩되어 클라이언트에 전달됨(사용자 정보는 Payload에 저장)
- 클라이언트가 더 많은 정보를 필요로 할 경우, Request 시, scope Parameter에 더 많은 정보 Claim 가능
[참고자료]
https://yeonyeon.tistory.com/264
https://dad-rock.tistory.com/855
https://6991httam.medium.com/oauth%EB%9E%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-openid-8c46a65616e6
https://cookiethecat2020.blogspot.com/2021/01/oauth-20-openid-connect.html
https://learn.microsoft.com/ko-kr/azure/active-directory/develop/v2-protocols-oidc
https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88%EC%95%84%EC%9D%B4%EB%94%94
'CS > WEB' 카테고리의 다른 글
URL vs URI vs URN (0) | 2022.10.24 |
---|---|
SSO(Single Sign-On)란? (0) | 2022.10.24 |
Authentication(인증) vs Authorization (인가) (0) | 2022.10.24 |
OAuth란? (OAuth2.0) (0) | 2022.10.24 |
쿠키(Cookie), 세션(Session), 토큰(Token) 인증 (0) | 2022.10.17 |