Liberty에서 OpenID Connect 클라이언트 구성

OpenID Connect 클라이언트 또는 RP(Relying Party)로서 작동하여 웹 싱글 사인온을 활용하며 OpenID Connect 제공자를 ID 제공자로서 사용할 수 있도록 Liberty 서버를 구성할 수 있습니다.

이 태스크 정보

기타 구성 정보와 함께 Liberty에서 openidConnectClient-1.0 기능을 사용하여 OpenID Connect 클라이언트의 역할을 수행하도록 Liberty 서버를 구성할 수 있습니다.

참고: JWT 토큰을 직접 허용하도록 클라이언트를 구성하려면 OpenID Connect에 대해 JWT(JSON Web Token) 인증 구성의 내용을 참조하십시오.

프로시저

  1. openidConnectClient-1.0 Liberty 기능 및 기타 필요한 기능을 server.xml 파일에 추가하십시오. ssl-1.0 기능도 openidConnectClient-1.0 기능에 필요합니다. server.xml 파일의 featureManager 요소에 다음 요소 선언을 추가하십시오.
    <feature>openidConnectClient-1.0</feature> 	
    <feature>ssl-1.0</feature>
  2. openidConnectClient 요소를 구성하십시오. 다음은 기본 Liberty 서버 OpenID Connect 제공자에서 작동하는 최소 구성의 예제입니다.

    클라이언트에는 OpenID Connect 제공자로부터의 경로 재지정 요청을 처리할 수 있는 지정된 URL 패턴에서 사용할 수 있는 구성된 애플리케이션이 있어야 합니다. 또한 이 URL은 클라이언트를 위해 OP에 대해 등록된 경로 재지정 URL과 정확하게 일치해야 합니다.

    문제점 예방: 아웃바운드 프록시를 사용하는 경우, OpenID Connect RP가 자동으로 호스트되는 프록시를 통해 요청을 라우팅하는 방법을 제공하지 않습니다.

    OP(OpenID Connect Provider)에 액세스하기 위해 프록시를 사용해야 하는 경우, 임의의 OP 관련 URL 특성에 대해 입력하는 값이 외부 OP 호스트 및 포트가 아니라 프록시 호스트 및 포트를 포함해야 합니다.

    대부분의 경우, OP 호스트 및 포트를 프록시 호스트 및 포트로 대체할 수 있습니다. 입력하는 URL이 RP 및 클라이언트(브라우저 또는 애플리케이션) 둘 다에 표시되어야 합니다. 사용할 올바른 URL을 판별하는 방법에 대한 안내가 필요하면 프록시 관리자에게 문의하십시오.

    이 예제에서 클라이언트는 SSL 포트가 443으로 설정될 것으로 예상합니다.

    <openidConnectClient id="client01" 		
        clientId="client01" 		
        clientSecret="{xor}LDo8LTor" 		
        authorizationEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/authorize" 		
        tokenEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/token"> 	
    </openidConnectClient>
    이 샘플 최소 구성에서는 다음과 같은 기본값을 사용한다고 가정합니다.
    • scope=openid profile: openid의 범위가 필요하며 scope 속성을 사용하여 필요한 범위를 편집할 수 있습니다. 예를 들어, 필요한 scopeopenid profile email로 변경할 수 있습니다.
    • 이 RP는 해당 경로 재지정 URL을 OP에 https://<host name>:<ssl port>/oidcclient/redirect/client01로 등록합니다. 여기서 호스트 이름과 SSL 포트는 모두 자동으로 분석되며 client01openidConnectClient 구성 요소의 ID입니다. RP 앞에 프록시가 있는 경우에는 호스트 이름 및 포트를 redirectToRPHostAndPort 속성으로 대체하고 redirectToRPHostAndPorthttps://<host name>:<ssl port>로 설정할 수 있습니다.
  3. 사용자 레지스트리를 구성하십시오. OP에 의해 리턴되는 사용자 ID는 기본적으로 레지스트리 사용자에 맵핑되지 않으므로 레지스트리에서 사용자를 구성하지 않아도 됩니다. 하지만 openidConnectClient 요소의 mapIdentityToRegistryUser 속성이 true로 설정되는 경우에는 인증 및 권한 부여에 성공하려면 OP에서 리턴되는 적절한 ID에 대한 사용자 항목이 있어야 합니다. 사용자 레지스트리 구성에 대한 자세한 정보는 Liberty에서 사용자 레지스트리 구성의 내용을 참조하십시오.
  4. 지원되는 OpenID Connect 제공자의 서명자 인증서를 포함하도록 서버의 신뢰 저장소를 구성하십시오. 키 저장소에 대한 자세한 정보는 Liberty에서 SSL 통신 사용의 내용을 참조하십시오.
  5. 구성된 신뢰 저장소를 사용하도록 서버의 SSL 구성을 수정하십시오.
    <sslDefault sslRef="DefaultSSLSettings" /> 
    <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> 	
    <keyStore id="myKeyStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 	
    <keyStore id="myTrustStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />

    OpenID Connect는 서버에 의해 지정되는 기본 SSL 구성을 사용하도록 구성되어 있습니다. 따라서 서버의 기본 SSL 구성에서는 OpenID Connect에 대해 구성되는 신뢰 저장소를 사용해야 합니다.

    [17.0.0.3 and later]예제에 표시된 대로 SSL 기본 구성을 사용하는 것 외에도 outboundSSLRef 속성을 사용하여 sslDefault 요소에 아웃바운드 기본 SSL 구성을 구성할 수 있습니다. 아웃바운드 기본 속성이 지정되면 outboundSSLRef 속성으로 지정된 SSL 구성이 아웃바운드 연결에 사용됩니다. SSL 구성에서 아웃바운드 SSL 필터를 사용하여 기본값을 대체하고 아웃바운드 연결에 사용할 호스트 및 포트를 지정할 수 있습니다. 자세한 정보는 SSL 구성을 위한 아웃바운드 필터아웃바운드 통신을 위한 SSL 설정 구성을 참조하십시오.

  6. 선택사항: 써드파티 OpenID Connect 제공자를 구성하십시오.

    써드파티 OpenID Connect 제공자(예: Microsoft Azure 또는 Google)를 사용하도록 Liberty OpenID Connect 클라이언트를 구성하려면 다음 속성을 구성해야 합니다. 속성 값은 /.well-known/openid-configuration 문자열을 발행자에 연결하여 형성되는 경로에서 JSON 문서를 제공하는 OP의 발견 엔드포인트를 호출하여 얻을 수 있습니다.

    1. jwkEndpointUrl 속성을 발견 파일에서 jwks_uri로 정의되는 OP의 JSON 웹 키 세트 JWK 문서의 URL로 설정하십시오. 예를 들어, Google의 OP를 사용하려면 jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs"를 설정하십시오.
    2. 발견 파일에서 정의된 대로 issuerIdentifier 속성을 issuer로 설정하십시오. 이 값이 iss 청구로 포함되어 있지 않은 ID 토큰은 거부됩니다. 예를 들어, Google을 OP로 사용하는 경우 issuerIdentifier="accounts.google.com"을 설정할 수 있습니다.
    3. signatureAlgorithm="RS256"을 설정하십시오. Liberty OpenID Connect 클라이언트의 기본 서명 알고리즘은 HS256입니다.
    4. userIdentityToCreateSubject 속성을 사용자의 고유 ID를 나타내는 공급업체의 ID 토큰에서 사용하는 청구 이름으로 설정하십시오. 예를 들어, Google의 OP를 사용하는 경우 userIdentityToCreateSubject ="email"을 설정할 수 있고 Microsoft Azure를 사용하는 경우 userIdentityToCreateSubject ="upn" 또는 userIdentityToCreateSubject ="unique_name"을 설정할 수 있습니다.
    5. groupIdentifier 속성을 사용자의 그룹 멤버십 또는 역할을 나타내는 청구 이름으로 설정하십시오. 예를 들어, Microsoft Azure를 사용하는 경우 groupIdentifier="groups"를 설정할 수 있습니다.

    추가 OpenID Connect 클라이언트 구성 옵션에 대해서는 OpenID Connect 클라이언트를 참조하십시오.

  7. 선택사항: 인증 필터

    openidConnectClient-1.0 기능이 사용으로 설정된 경우 openidConnectClient 요소가 authFilterRef 속성을 사용하여 구성되어 있지 않으면 인증되지 않은 요청이 OpenID Connect 제공자를 통해 인증됩니다.

    인증 필터 구성에 대한 자세한 정보는 인증 필터의 내용을 참조하십시오.

  8. 여러 OpenID Connect 제공자를 지원하십시오.

    다수의 openidConnectClient 요소와 다수의 인증 필터를 작성하여 Liberty를 다수의 OpenID Connect 제공자에 대한 OpenID Connect RP(Relying Party)로서 구성할 수 있습니다. 각 openidConnectClient 요소는 한 OpenID Connect 제공자와의 단일 싱글 사인온 관계를 정의하며 authFilterRef 속성을 사용하여 하나의 인증 필터를 참조합니다.

  9. 지원되는 ID 토큰 서명 알고리즘을 구성하십시오.

    ID 토큰에서 RS256 서명 알고리즘을 지원하도록 Liberty OpenID Connect 클라이언트를 구성할 수 있습니다. Liberty OpenID Connect 클라이언트의 기본 서명 알고리즘은 HS256입니다. signatureAlgorithm="RS256"을 설정하여 RS256을 ID 토큰의 서명 알고리즘으로 구성하는 경우, OP가 JWK 엔드포인트를 지원하지 않는 한 trustStoreReftrustAliasName을 둘 다 구성해야 합니다.

  10. 선택사항: "암시적" 권한 부여 유형을 구성하십시오.

    openidConnectClient-1.0 기능은 권한 부여 코드 권한 부여 유형을 사용하여 사용자 인증 토큰을 요청하며, 사용자는 server.xml 파일에 grantType="implicit"를 추가하여 "암시적" 권한 부여 유형을 사용하도록 Liberty openidConnectClient-1.0 기능을 구성할 수 있습니다. Liberty 서버 및 OpenID Connect 제공자가 서로 다른 방화벽에 있는 경우에는 이 구성 옵션을 사용해야 합니다.

  11. 선택사항: Liberty OpenID Connect RP(Relying Party)는 ID 토큰이 처리된 후에 자동으로 싱글 사인온(SSO) 토큰을 작성합니다. 구성 특성 disableLtpaCookie="true"를 추가하여 OpenID Connect로 보호되는 자원에 대한 SSO 토큰이나 서버에 대한 SSO 토큰을 작성하지 않도록 Liberty를 구성할 수 있습니다. disableLtpaCookie="true"를 설정하는 경우, Liberty OpenID Connect 클라이언트는 구성된 OpenID Connect 제공자로 사전 인증된 인증 요청만 허용하며 인증 세션 수명이 ID 토큰의 수명으로 제한됩니다.
  12. 선택사항: 요청을 OpenID Connect 제공자로 경로 재지정하지 않고 유효한 OAuth 2.0 Bearer 액세스 토큰을 인증 토큰으로 선택적으로 승인하도록 OpenID Connect 클라이언트를 구성할 수 있습니다. 요청에 유효한 OAuth 2.0 Bearer 액세스 토큰이 포함된 경우, Liberty OpenID Connect 클라이언트는 자동으로 액세스 토큰을 유효성 검증하며 토큰 유효성 검증 결과를 기반으로 인증된 주제를 작성합니다. 요청에 액세스 토큰이 포함되지 않거나 액세스 토큰이 올바르지 않은 경우, Liberty OpenID Connect 클라이언트는 계속해서 사용자를 OpenID Connect 제공자로 경로 재지정합니다. 이 기능은 Liberty 서버가 브라우저 클라이언트 및 비-브라우저 클라이언트(예: RESTful 클라이언트)를 둘 다 서비스할 수 있도록 합니다. 구성에 inboundPropagation=”supported”를 추가하여 이 기능을 사용으로 설정할 수 있습니다.
  13. [16.0.0.4 and later]호스트 환경이 /oidcclient 컨텍스트 루트에 대한 액세스를 허용하지 않으면 oidcClientWebapp 요소를 구성하여 컨텍스트 루트를 수정하십시오.

    기본적으로 Liberty OpenID Connect 클라이언트의 경로 재지정 서블릿은 /oidcclient 컨텍스트 루트를 청취하며, 이의 경로 재지정 URL 형식은 https://<host_name>:<ssl_port>/oidcclient/redirect/<configuration_ID>입니다. 이 컨텍스트 루트를 사용할 수 없는 경우 서버 구성에서 다른 컨텍스트 루트를 설정하십시오.

    예를 들어, 호스트 환경에서 /acme/openid 컨텍스트 루트를 사용해야 하는 경우 다음 요소를 추가하십시오.
    <oidcClientWebapp contextPath="/acme/openid" />

    결과적인 경로 재지정 URL 형식은 https://<host_name>:<ssl_port>/acme/openid/redirect/<configuration_ID>입니다.

결과

이제 OpenID Connect 제공자로서 구성된 기타 Liberty 서버와 통신할 수 있는 OpenID Connect 클라이언트로서 Liberty 서버를 구성하는 데 필요한 최소 구성이 설정되었습니다.

주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_config_oidc_rp.html