Liberty에서 OpenID Connect 제공자 구성

OpenID Connect 제공자 또는 권한 부여 서버로서 작동하여 웹 싱글 사인온을 활용할 수 있도록 Liberty 서버를 구성할 수 있습니다.

이 태스크 정보

기타 구성 정보와 함께 Liberty에서 openidConnectServer-1.0 기능을 사용하여 OpenID Connect 제공자 역할을 수행하도록 Liberty 서버를 구성할 수 있습니다.

프로시저

  1. openidConnectServer-1.0 Liberty 기능 및 기타 필요한 기능을 server.xml 파일에 추가하십시오. openidConnectServer-1.0 기능에는 ssl-1.0 기능도 필요합니다.
    <feature>openidConnectServer-1.0</feature>
    <feature>ssl-1.0</feature>
  2. OAuth 서비스 제공자를 정의하십시오. OpenID Connect는 OAuth 2.0 프로토콜 위에 빌드되므로 사용자는 올바른 OAuth 서비스 제공자를 구성해야 합니다. OAuth 서비스 제공자의 구성에는 적절한 oauth-roles, oauthProvider 및 사용자 레지스트리 요소가 포함됩니다. OpenID Connect를 사용할 수 있는 권한이 부여된 사용자는 모두 authenticated oauth-role에도 맵핑되어야 합니다. 자세한 정보는 OAuth 서비스 제공자 정의를 참조하십시오.

    OAuth 메타데이터가 OpenID Connect에 대해 업데이트되며 주요 추가사항이 클라이언트 메타데이터에 있습니다. 클라이언드 등록을 위해 databaseStore 모드를 사용하는 경우 클라이언트 등록 요청을 승인하도록 OpenID Connect 제공자 구성의 내용을 참조하십시오. 문서를 따라 클라이언트를 관리하는 것이 좋습니다. 클라이언트 등록을 위해 localStore 모드를 사용하는 경우에는 scope, preAuthorizedScope, grantTypes, responseTypes, introspectTokensfunctionalUserId와 기타 속성을 등록할 수 있습니다.

  3. oauthProviderRef 속성이 구성된 oauthProvider를 참조하는 openidConnectProvider 요소를 추가하십시오. 각각의 oauthProvider는 하나의 openidConnectProvider에 의해서만 참조될 수 있으므로 둘 이상의 openidConnectProvider 요소가 동일한 oauthProvider를 참조할 수 없습니다. 클라이언트 요소의 secret 속성 및 name 속성은 해당 OpenID Connect 클라이언트의 client secretclient ID와 일치해야 합니다. 이 예제는 기본 Liberty 서버 OpenID Connect 클라이언트에서 작동됩니다.
    참고: 이 예제에서 OP는 클라이언트의 SSL 포트가 443으로 설정될 것으로 예상합니다.
    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" /> 
    
    <oauthProvider id="OAuthConfigSample"> 
    <localStore>
    <client name="client01" secret="{xor}LDo8LTor"
    displayname="client01" 
    scope="openid profile email" 
    redirect="https://server.example.com:443/oidcclient/redirect/client01"/> 
    </localStore>
    </oauthProvider>
    참고: 올바른 클라이언트는 authorization_code 권한 부여 유형에 대한 해당 이름, 경로 재지정, 범위 및 시크릿을 등록해야 합니다.
  4. 지원되는 OpenID Connect RP(Relying Party)(또는 클라이언트)의 서명자 인증서를 포함하도록 서버의 신뢰 저장소를 구성하십시오. 키 저장소에 대한 정보는 Liberty에서 SSL 통신 사용의 내용을 참조하십시오.
  5. 구성된 신뢰 저장소를 사용하도록 서버의 SSL 구성을 수정하십시오.
    <sslDefault sslRef="DefaultSSLSettings" /> 	
    <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> 	
    <keyStore id="myKeyStore" password="{xor}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 
    <keyStore id="myTrustStore" password="{xor}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />

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

    OpenID Connect의 사용자 승인 양식은 플러그 가능하므로 제공자가 자체 승인 양식을 작성하고 유지보수할 수 있게 합니다. 이 양식은 SSL을 통해 검색되므로 승인 양식이 호스팅되는 서버의 서명자 인증서를 포함하도록 신뢰 저장소를 구성해야 합니다. 기본 승인 양식이 사용되며 OpenID Connect에 사용되는 신뢰 저장소가 Liberty 서버가 사용하는 키 저장소와 다르도록 구성되어 있는 경우, 사용자는 Liberty 서버의 서명자 인증서를 OpenID Connect 신뢰 저장소로 가져와야 합니다.

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

    참고: OpenID Connect를 사용하려면 scope 속성이 범위 목록에 openid를 포함해야 합니다.

    추가 OpenID Connect 제공자 구성 옵션에 대해서는 OpenID Connect 제공자를 참조하십시오.

    추가 OAuth 구성 옵션에 대해서는 Oauth를 참조하십시오.

  6. [16.0.0.3 and later]선택사항: access_token 토큰으로서 JWT(JSON Web Token) 토큰을 발행하도록 Liberty OpenID Connect 제공자를 구성하십시오.

    기본적으로, Liberty는 오파크 access_token 토큰을 발행합니다. 오파크 토큰은 토큰 수신인이 토큰을 발행한 서버에 콜백해야 합니다. oauthProvider 구성 요소에서 jwtAccessToken="true"를 설정하거나 com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator 서비스 프로그래밍 인터페이스(SPI)를 구현하여 토큰 내에 토큰 확인 메커니즘이 포함된 access_token 토큰으로서 JWT 토큰을 대신 발행하도록 Liberty OpenID Connect 제공자를 구성할 수 있습니다.

    인터페이스에 대한 자세한 정보는 WebSphere OAuth 2.0 웹 싱글 사인온 SPI 또는 ${wlp.install.dir}/dev/spi/ibm/ 디렉토리에서 제품과 함께 제공된 Java 문서를 참조하십시오.

  7. [16.0.0.4 and later]선택사항: Liberty OpenID Connect 제공자가 전송하는 id_token 토큰의 컨텐츠를 사용자 정의하십시오.
    기본적으로, Liberty OpenID Connect 제공자는 사용자 이름과 그룹 멤버십 정보가 포함된 id_token 토큰을 발행합니다. 다음 방법으로 토큰 컨텐츠를 사용자 정의할 수 있습니다.
    • com.ibm.wsspi.security.openidconnect.IDTokenMediator SPI를 구현하여 id_token 컨텐츠를 완전히 사용자 정의하십시오. SPI는 최고의 유연성을 제공하므로 고유한 사용자 정의 토큰을 빌드할 수 있습니다.

      인터페이스에 대한 자세한 정보는 WebSphere OAuth 2.0 웹 싱글 사인온 SPI 또는 ${wlp.install.dir}/dev/spi/ibm/ 디렉토리에서 제품과 함께 제공된 Java 문서를 참조하십시오.

    • 서버 구성에서 openidConnectProvider 요소의 customClaims 속성에서 추가 청구를 나열하여 연합 사용자 레지스트리에서 추가 사용자 속성을 페치하십시오. 청구 이름이 연합 사용자 레지스트리의 속성 이름과 다른 경우 claimToUserRegistryMap 요소의 속성에 청구 이름을 맵핑하십시오.
      예를 들어, 다음 구성은 여러 청구를 추가하며 alias 청구를 seeAlso 레지스트리 속성에 맵핑하고 lastName 청구를 sn 속성에 맵핑합니다.
      <openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office">
          <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> 
          ...
      </openidConnectProvider>

      추가 정보는 UserInfo 엔드포인트에 의해 리턴되는 청구 구성의 내용을 참조하십시오.

  8. [17.0.0.2 and later]선택사항: 사용자 인증을 소셜 로그인에 위임하여 사용자가 자신의 소셜 미디어 계정으로 로그인할 수 있도록 하려면 Liberty OpenID Connect 제공자를 구성하십시오.

    Liberty OpenID Connect 제공자에 대한 소셜 로그인이 구성되면 사용자는 Liberty 제공자에 대한 계정을 작성할 필요 없이 자신의 소셜 미디어 계정을 사용하여 로그인할 수 있게 됩니다. 추가 정보는 Liberty에 소셜 로그인 구성의 내용을 참조하십시오.

  9. 옵션: [17.0.0.4 and later]클라이언트 경로 재지정 URL(Uniform Resource Locator)에서 정규식을 사용하도록 Liberty OpenID Connect 제공자를 구성하십시오.
    1. 정규식을 사용하도록 설정하려면 allowRegexpRedirects 클라이언트 속성을 true로 설정하십시오.
    2. regexp: 문자열에 접두부를 추가하여 URL을 정규식으로 평가하십시오. 정규식이 없는 URL이 먼저 검사됩니다.
    3. 등록 엔드포인트를 통해 클라이언트를 등록할 때 정규식의 백슬래시(\)를 느낌표(!)로 대체합니다.
    참고: 의도하지 않은 URL로의 경로 재지정을 허용하면 보안 노출이 발생할 수 있습니다. 정규식을 사용하는 경우 허용하지 않으려는 URL과 일치하지 않는지 확인하십시오.

    다음 예제에서 URL이 정규식과 일치하므로 https://apphost043.example.com URL로의 경로 재지정을 허용할 수 있습니다.

    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" />
    
    <oauthProvider id="OAuthConfigSample">
       <localStore>
          <client name="client01" secret="{xor}LDo8LTor" displayname="client01" scope="openid profile email" allowRegexpRedirects="true">
               <redirect>"https://apphost.example.com:443/oidcclient/redirect/client01"</redirect>
               <redirect>"regexp:https://apphost\d\d\d\.example\.com:443/oidcclient/redirect/client01"</redirect>
          </client>   </localStore>
    </oauthProvider>

결과

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

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

파일 이름: twlp_config_oidc_op.html