OpenID Connect

OpenID Connect는 클라이언트 애플리케이션이 사용자의 ID를 확인하기 위해 OpenID Connect 제공자에 의해 수행되는 인증에 의존할 수 있게 하는 OAuth 2.0 프로토콜에 빌드되는 개방형 표준이며 단순 ID 프로토콜입니다.

OpenID Connect는 인증 및 권한 부여를 위해 OAuth 2.0을 사용한 후 사용자를 고유하게 식별하는 ID를 빌드합니다. 클라이언트 애플리케이션은 OpenID Connect 제공자로부터 상호 운용 가능한 REST와 비슷한 방식으로 사용자에 대한 기본 프로파일 정보를 얻을 수도 있습니다.

Liberty는 OpenID Connect 1.0을 지원하며, 웹 싱글 사인온에서 제공자로서 및 클라이언트나 RP(Relying Party)로서의 역할을 수행합니다. 다음의 OpenID Connect 스펙이 지원됩니다.

OpenID Connect Core 1.0:
OpenID Connect RP(Relying Party)로서 구성된 Liberty 서버는 권한 부여 코드 플로우를 사용한 인증을 지원합니다.
OpenID Connect 제공자로서 구성된 Liberty 서버는
권한 부여 코드 플로우 및 암시적 플로우를 사용한 인증을 지원합니다.

Liberty 서버를 웹 기반 RP(Relying Party)로 사용하는 사용자의 경우, OpenID Connect 기본 클라이언트 구현자 안내서 1.0은 보다 읽기가 용이한 OpenID Connect Core 스펙의 서브세트이며 권한 부여 코드 플로우를 사용하는 웹 기반 RP(Relying Party)에 대한 세부사항을 제공합니다.

액세스 토큰
보호된 자원에 액세스하는 데 사용되는 신임입니다. 액세스 토큰은 클라이언트에게 발행되는 권한 부여를 나타내는 문자열입니다.
권한 부여 엔드포인트
사용자의 권한 부여 및 인증을 수행하기 위해 클라이언트로부터의 권한 부여 요청을 승인하는 OpenID 제공자의 자원입니다. 권한 부여 엔드포인트는 권한 부여 코드 플로우에서 클라이언트에게 권한 부여(또는 코드)를 리턴합니다. 암시적 플로우에서 권한 부여 엔드포인트는 ID 토큰 및 액세스 토큰을 클라이언트에게 리턴합니다.
권한 부여
자원에 액세스하는 데 필요한 사용자의 권한 부여를 나타내고 액세스 토큰을 얻기 위해 클라이언트가 사용하는 신임입니다.
청구
엔티티에 대해 어설션된 정보입니다. 청구의 예로는 전화번호, 성, 이름 등이 있습니다.
ID 토큰
인증된 사용자에 대한 청구가 포함된 JWT(JSON Web Token)입니다.
인트로스펙션 엔드포인트
액세스 토큰을 보유하는 클라이언트가 사용자 이름, 권한 부여된 범위, 클라이언트 ID 또는 기타 정보 등의 액세스 토큰을 작성하는 데 사용된 정보를 검색할 수 있게 하는 OpenID 제공자의 자원입니다.
OpenID Connect 제공자(OP)
클라이언트 또는 RP(Relying Party)에게 청구를 제공할 수 있는 OAuth 2.0 권한 부여 서버입니다.
새로 고치기 토큰
OP에 의해 클라이언트에게 발행되며 현재 액세스 토큰이 만료될 때 새 액세스 토큰을 얻거나 더 많은 액세스 토큰을 얻기 위해 사용됩니다.
RP(Relying Party)
OpenID Connect 클라이언트로서 구성된 Liberty 서버 또는 OpenID 제공자(OP)의 청구를 필요로 하는 클라이언트 애플리케이션입니다.
범위
써드파티의 자원에 액세스하도록 허용되는 권한입니다.
토큰 엔드포인트
액세스 토큰, ID 토큰 및 새로 고치기 토큰과 교환하여 클라이언트로부터 권한 부여 또는 코드를 승인하는 OP의 자원입니다.

OpenID Connect 클라이언트로서의 Liberty 서버

OpenID Connect 클라이언트로 작동하도록 Liberty를 구성할 수 있습니다. 이 설정은 Liberty 서버가 사용자 인증 및 권한 부여를 위한 OP 역할을 수행하는 다른 Liberty 서버에 의존할 수 있도록 합니다.

OpenID Connect 클라이언트의 역할을 수행하도록 구성된 Liberty 서버는 OpenID Connect 1.0 표준의 권한 부여 코드 플로우를 지원합니다.

권한 부여 코드 플로우에서 모든 토큰 교환은 OpenID Connect 제공자의 토큰 엔드포인트를 사용하여 처리됩니다. 먼저 클라이언트가 권한 부여 요청을 OP의 권한 부여 엔드포인트에 제출합니다. OP에 대해 인증 및 권한 부여가 성공하면 클라이언트가 OP로부터 권한 부여(또는 코드)를 수신합니다. 그런 다음 이 권한 부여 코드를 OP의 토큰 엔드포인트에 대한 요청에 전송할 수 있습니다. 클라이언트가 토큰 엔드포인트로부터의 응답에 ID 토큰, 액세스 토큰 및 새로 고치기 토큰을 수신합니다. 그런 다음 클라이언트가 ID 토큰을 유효성 검증하고 사용자의 주제 ID를 검색합니다. 이 프로파일 플로우는 클라이언트 자신과 OP 간 클라이언트 시크릿을 안전하게 유지할 수 있는 클라이언트를 위한 것입니다. 이 플로우에서는 클라이언트가 새로 고치기 토큰을 얻을 수도 있습니다.

OpenID Connect 클라이언트로서 Liberty 서버 구성에 대해서는 Liberty에서 OpenID Connect 클라이언트 구성의 내용을 참조하십시오.

OpenID Connect 제공자로서의 Liberty 서버

OpenID Connect 제공자로서 작동하도록 Liberty를 구성할 수 있습니다. 이 설정을 사용하여 Liberty 서버는 OpenID Connect 클라이언트에 의해 사용될 수 있는 권한 부여 서버의 역할을 수행할 수 있습니다.

OpenID Connect 제공자의 역할을 수행하도록 구성된 Liberty 서버는 OpenID Connect 1.0 표준의 권한 부여 코드 플로우 및 암시적 플로우를 지원합니다. 각각의 플로우는 ID 토큰, 액세스 토큰 및 새로 고치기 토큰이 클라이언트에 리턴되는 방법을 판별합니다.

권한 부여 코드 플로우는 OpenID Connect 제공자의 토큰 엔드포인트를 사용하여 모든 토큰 교환을 처리합니다. OpenID Connect 제공자는 OP의 권한 부여 엔드포인트에서 클라이언트로부터 권한 부여 요청을 승인합니다. 인증이 필요한 경우 OpenID Connect 제공자는 적절한 인증을 수행합니다. OpenID Connect 제공자는 예를 들어, 브라우저에서 사용자에게 특정 범위에 대한 액세스를 부여하는 권한에 대한 프롬프트를 표시하여 사용자로부터 필요한 승인 또는 권한 부여도 얻습니다. 성공한 경우(또는 인증이 필요하지 않은 경우) OpenID 제공자는 권한 부여(또는 코드)를 다시 클라이언트에 전송합니다. 그런 다음 OpenID Connect 제공자는 권한 부여 코드를 포함하는 클라이언트에 의해 해당 토큰 엔드포인트에 제출되는 요청을 승인합니다. 권한 부여 코드를 포함하는 요청이 OpenID 제공자에 의해 유효성 검증됩니다. 유효성 검증에 성공하면 OpenID Connect 제공자가 ID 토큰 및 액세스 토큰을 포함하는 클라이언트에 대한 응답을 리턴합니다.

암시적 플로우에서는 권한 부여 코드 플로우와는 달리 모든 토큰이 권한 부여 엔드포인트로부터 리턴됩니다. OP의 토큰 엔드포인트는 사용되지 않습니다. 먼저 클라이언트가 OP의 권한 부여 엔드포인트에 대한 인증 요청을 준비하여 전송합니다. 그런 다음 OpenID Connect 제공자는 필요한 인증을 수행하고 사용자로부터 필요한 승인 또는 권한 부여도 얻습니다. 예를 들어, OpenID Connect 제공자는 브라우저에서 사용자에게 특정 범위에 대한 액세스를 부여하는 권한에 대한 프롬프트를 표시합니다. 인증 및 권한 부여에 성공하면 OpenID Connect 제공자가 ID 토큰 및 액세스 토큰을 클라이언트에 다시 전송합니다. 그런 다음 클라이언트가 ID 토큰을 유효성 검증하고 사용자의 주제 ID를 검색합니다. 이 프로파일 플로우는 클라이언트 자신과 OP(예: 기본 애플리케이션) 간 클라이언트 시크릿을 안전하게 유지할 수 없는 클라이언트를 위한 것입니다.

OpenID Connect 제공자로서 Liberty 서버를 구성하는 정보는 Liberty에서 OpenID Connect 제공자 구성의 내용을 참조하십시오.

권한 코드 플로우

일반적인 OpenID Connect 권한 코드 플로우가 다음과 같이 설명되어 있습니다.

  1. 사용자가 RP의 애플리케이션에 액세스합니다.
  2. RP가 인증 요청을 준비하고 사용자의 경로를 OP로 재지정합니다.
  3. OP가 사용자를 인증합니다(예: 사용자에게 신임에 대한 프롬프트 표시). 사용자는 애플리케이션에 필요한 정보에 액세스할 수 있는 권한을 RP에 부여합니다. OP는 RP에 대한 일회성 사용 권한 부여 코드를 생성합니다.
  4. OP가 사용자의 경로를 다시 권한 부여 코드를 가진 RP로 재지정합니다.
  5. RP가 OP의 토큰 엔드포인트를 호출하여 액세스 토큰, ID 토큰 및 새로 고치기 토큰으로 권한 부여 코드를 교환합니다.
  6. RP가 ID 토큰을 사용하여 사용자에게 권한을 부여합니다.
OpenID Connect 기본 클라이언트 프로파일 플로우를 여기서 볼 수 있음

암시적 플로우

암시적 플로우는 OpenID Connect 제공자의 역할을 수행하는 Liberty 서버에 의해서만 지원됩니다. 일반적인 OpenID Connect 암시적 플로우가 다음과 같이 설명되어 있습니다.

  1. 사용자가 RP의 애플리케이션에 액세스합니다.
  2. RP가 인증 요청을 준비하고 사용자의 경로를 OP로 재지정합니다.
  3. OP가 사용자를 인증합니다(예: 사용자에게 신임에 대한 프롬프트 표시). 사용자는 애플리케이션에 필요한 정보에 액세스할 수 있는 권한을 RP에 부여합니다.
  4. OP가 사용자의 경로를 다시 ID 토큰 및 액세스 토큰을 가진 RP로 재지정합니다.
  5. RP가 ID 토큰을 사용하여 사용자에게 권한을 부여합니다.
OpenID Connect 암시적 클라이언트 프로파일 플로우를 여기서 볼 수 있음

주제의 유형을 표시하는 아이콘 개념 주제

파일 이름: cwlp_openid_connect.html