OpenID Connect 개념

OpenID Connect는 OAuth 2.0 기능을 확장합니다. OpenID Connect 개념에는 OAuth 2.0 개념이 포함됩니다.

OpenID Connect 제공자(OP)
사용자를 인증하고 인증 이벤트 및 사용자에 대해 신뢰 당사자에게 청구를 제공하는 OAuth 2.0 권한 서버입니다.
신뢰 당사자(RP)
OpenID Connect 제공자의 사용자 인증과 청구가 필요한 OAuth 2.0 클라이언트입니다.
청구

ID 토큰에 포함된 엔티티에 대해 확인된 일부 정보입니다. OpenID Connect 제공자는 해당 ID 토큰에 포함된 청구를 문서화해야 합니다.

다음 청구는 인증 이벤트에 대한 필수 청구입니다.

  • aud(대상): 발행자에 등록된 RP의 클라이언트 ID를 포함해야 합니다.
  • iss(발행자): OP의 발행자 ID입니다.
  • exp(만기 시간): RP는 이 시간 전에 ID 토큰을 유효성 검증해야 합니다.
  • iat(발행 시간): ID 토큰이 발행된 시간입니다.

다음 청구는 사용자에 대한 필수 청구입니다.

  • sub(주체): 발행자의 사용자에 대한 로컬에서 고유하고 영구적인(결코 재지정되지 않음) ID입니다.

사용자에 대한 선택적 청구에는 first_name, last_name, picture, gender 등이 포함될 수 있습니다.

범위
신뢰 당사자가 요청하는 특성으로서, ID 토큰에 포함된 특정 청구를 요청하며 사용자는 여기에 동의할 수 있습니다. OAuth의 범위 정의 외에 OpenID Connect는 올바르게 정의된 몇 가지 범위를 추가합니다. 이 경우 openid 범위가 OpenID Connect 플로우에 대한 요청을 식별해야 합니다. 또한 이 범위에는 특정 청구 세트와 관련된 공통 범위 profileemail이 포함됩니다.
Bearer 토큰
OAuth 2.0 지원을 위한 Bearer 토큰에 대한 설명에 나열된 토큰 유형 외에, OpenID Connect의 경우 토큰이 ID 토큰일 수 있습니다.
ID 토큰

인증 이벤트와 사용자에 대한 청구가 포함된 JWT(JSON Web Token)입니다.

JWT는 세 개의 섹션(헤더, 청구 세트, JWS(JSON Web Signature))을 가진 Base64 인코딩 JSON 오브젝트입니다. JWT에서 섹션은 마침표('.')로 구분됩니다. 헤더에는 최소한 JWT 사인에 사용되는 알고리즘이 포함되어야 합니다(alg 청구).

청구 세트에는 인증 이벤트와 사용자에 대한 청구가 포함됩니다.

JWS(JSON Web Signature)는 JWT 사인을 검증하는 데 사용됩니다. 자세한 정보는 RFC7515를 참조하십시오.

JWT에 대한 자세한 정보는 RFC7519를 참조하십시오.

발행자
청구 세트를 발행하는 엔티티입니다.
발행자 ID
발행자의 검증 가능한 ID입니다. 발행자 ID는 스킴, 호스트, 그리고 선택적으로 포트 번호와 경로 구성요소가 포함되어 있으며 조회 또는 조각 구성요소는 포함되지 않은 HTTPS 스킴을 사용하는 대소문자 구분 URL입니다.
하이브리드 플로우

OpenID Connect 하이브리드 플로우는 /authorize에 대한 요청이며, 여기서 권한 코드와 액세스 토큰이나 ID 토큰 중 하나 또는 모두 리턴됩니다. 하이브리드 플로우에 대한 response_type의 값은 다음 값 중 하나입니다.

  • code id_token
  • code id_token token
  • code token

일부 토큰은 권한 엔드포인트에서 리턴되고 나머지 토큰은 토큰 엔드포인트에서 리턴됩니다.

참고: 하이브리드 플로우는 OpenID Connect에서 지원되지만 OAuth에서는 지원되지 않습니다. http://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth를 참조하십시오.
메타데이터
메타데이터는 OpenID 제공자(OP)가 노출하는 검색 정보입니다. 메타데이터가 구성된 경우 신뢰 당사자(RP)는 이를 RP에 대한 /authorize, /token, /jwks/userinfo URL의 소스로 사용합니다. http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata를 참조하십시오.
Userinfo
UserInfo 엔드포인트는 인증된 사용자에 대해 청구를 리턴하는 OAuth 2.0 보호 자원입니다. 이러한 청구는 일반적으로 각 청구에 대한 이름과 값 쌍의 콜렉션이 포함된 JSON 오브젝트로 표시됩니다. 추가 정보는 http://openid.net/specs/openid-connect-core-1_0.html#UserInfo의 내용을 참조하십시오.