Liberty에서 SAML 웹 브라우저 SSO 구성
SAML 웹 브라우저 싱글 사인온(SSO) 서비스 제공자의 역할을 수행하도록 Liberty 서버를 구성할 수 있습니다.
이 태스크 정보
기타 구성 정보 외에도 Liberty의 samlWeb-2.0 기능을 사용으로 설정하여 SAML 웹 SSO 서비스 제공자로 Liberty 서버를 구성할 수 있습니다.
프로시저
- featureManager 요소 내에 다음 요소 선언을 추가하여
server.xml 파일에 samlWeb-2.0 Liberty
기능을 추가하십시오.
<feature>samlWeb-2.0</feature>
- Liberty는 기본 samlWebSso20 요소를 제공합니다.
<samlWebSso20 id="defaultSP"> </samlWebSso20>
이 기본 구성에서 다음 기본값이 가정됩니다.- AssertionConsumerService
URL:
https://<hostname>:<sslport> /ibm/saml20/defaultSP/acs
- 서비스 제공자(SP) 메타데이터
URL:
https://<hostname>:<sslport> /ibm/saml20/defaultSP/samlmetadata
브라우저를 사용하면 이 URL을 통해 서비스 제공자(SP)의 메타데이터를 다운로드하고, SAML ID 제공자에 URL을 제공하여 이 SP와 ID 제공자(IdP) 간의 연합을 설정할 수 있습니다.
- IdP 메타데이터 파일을 서버의 resources/security 디렉토리에 복사하고 이름을 idpMetadata.xml로 지정해야 합니다.
- SAML 어설션의 발행자 이름은 보안 영역으로 사용되고 NameID는 SAML 어설션에서 인증된 주제를 작성하는 데 프린시펄로 사용됩니다.
- KeyStoreRef 속성을 지정하지 않으면 SAML AuthnRequest는 서버의 기본 키 저장소에서 개인 키로 서명됩니다. keyAlias가 구성되지 않으면 samlsp는 기본 키 별명입니다. keyAlias가 구성되지 않았고 키 저장소에 하나의 개인 키만 포함되어 있는 겨우, 서명에 개인 키가 사용됩니다.
참고: 새 서비스 제공자 인스턴스를 작성하고 defaultSP가 더 이상 필요하지 않으면 다음을 server.xml 파일에 추가하여 defaultSP 인스턴스를 사용 안함으로 명시적으로 설정해야 합니다.<samlWebSso20 id="defaultSP" enabled="false"> </samlWebSso20>
참고: 널이 아닌 URL 안전 문자열을 samlWebSso20의 ID로 지정해야 합니다. ID가 누락되면 구성 요소가 생략되고 defaultSP로 처리되지 않습니다.참고: SAML이 구성되고 사용 가능하면 인증되지 않은 모든 요청이 SAML 인증을 사용합니다. SAML 인증을 사용하거나 사용하지 않을 요청 유형을 구성하려면 15단계에 설명된 대로 인증 필터를 구성해야 합니다. - AssertionConsumerService
URL:
- 선택사항: <samlWebSso20 id="defaultSP">를
server.xml 파일에 추가하고 defaultSP
서비스 제공자를 사용자 정의할 수 있습니다. 예를 들어 다음과 같습니다.
- idpMetadata: 기본 위치 및 파일 이름 (${server.config.dir}/resources/security/idpMetadata.xml)에서 IdP 메타데이터 위치 및 파일 이름을 변경하려면 이 매개변수를 추가하십시오.
- userIdentifier: 값이 프린시펄 이름으로 사용되는 SAML 속성 이름을 선택하려면 이 매개변수를 추가하십시오.
- groupIdentifier: 값이 주제의 그룹 멤버로 포함된 SAML 속성 이름을 선택하려면 이 매개변수를 추가하십시오.
- realmName: 이 서비스 제공자의 SAML 프린시펄을 식별하도록 영역 이름을 명시적으로 지정하려면 이 매개변수를 사용하십시오. 기본 영역 이름은 SAML 발행자 이름입니다.
- 선택사항: 하나 이상의 새 samlWebSso20 요소를 서로 다른
ID로 작성할 수 있습니다. 예를 들어, ID가 mySP인 새 요소를
작성하는 경우 새 AssertionConsumerService URL을 포함하는
새 SAML SP 인스턴스를 효율적으로 작성합니다.
https://<hostname>:<sslport>/ibm/saml20/mySP/acs
참고: samlWebSso20에 대해 선택한 ID가 SP의 URL(AssertionConsumerService URL 및 메타데이터 URL)에 포함됩니다. samlWebSso20 ID는 비어 있으면 안 되고 안전하지 않은 URL 문자를 포함해서도 안 됩니다. - 선택사항: 신뢰 엔진을 구성할 수 있습니다. Liberty
SAML SP는 신뢰 엔진의 두 가지 유형을 지원합니다.
- 메타데이터 신뢰 엔진: 구성된 IdP 메타데이터에 제공된 정보에 대해 서명을 유효성 검증합니다.
- PKIX 신뢰 엔진: PKIX 유효성 검증을 통해 서명된 인증서의 신뢰성을 유효성 검증합니다. 이 유효성 검증을 전달하는 인증서가 신뢰 가능한 것으로 가정됩니다.
메타데이터는 기본 신뢰 엔진입니다. PKIX 신뢰 엔진을 사용하려면 PKIXTrustEngine 요소를 추가하고 적합한 trustAnchor를 정의해야 합니다.
- 선택사항: SAML에서 인증된 주제를 작성하는 방법을 구성할 수
있습니다. 기본적으로 Liberty SP는 로컬 사용자 레지스트리를
요구하지 않고 SAML 어설션에서 직접 주제를 작성하며, 이는
mapToUserRegistry=No 구성에 해당합니다.
다른 구성 옵션은 mapToUserRegistry=User 또는 mapToUserRegistry=Group입니다.
- mapToUserRegistry=No: SAML 발행자의 이름은 영역이고, NameID는 주제에서 프린시펄 이름 및 고유 보안 이름을 작성하는 데 사용되며, 그룹 구성원은 포함되지 않습니다. 속성 userIdentifier, realmIdentifier, groupIdentifier, userUniqueIdentifier를 구성하여 사용자 정의된 사용자 이름, 영역 이름, 그룹 멤버십, 고유 보안 ID로 인증된 주제를 작성할 수 있습니다.
- mapToUserRegistry=User: 사내 구축 환경의 사용자 레지스트리에 대해 SAML 사용자를 유효성 검증하고 사내 구축 환경의 레지스트리에 따라 사용자 주제를 작성하려는 경우 이 옵션을 선택하십시오.
- mapToUserRegistry=Group: 로컬 사용자 레지스트리에 대해 SAML 그룹을 유효성 검증하고 이 유효성 검증된 그룹을 포함하도록 주제를 작성하려면 이 옵션을 선택하십시오. 이 옵션은 사내 구축 환경의 사용자 레지스트리에 대해 그룹 멤버십을 확인하는 경우를 제외하고 mapToUserRegistry=No와 유사합니다.
- 선택사항: Liberty SAML SPI com.ibm.wsspi.security.saml2.UserCredentialResolver를 사용자 기능으로 구현하여 Liberty 주제에 SAML 어설션을 동적으로 맵핑할 수 있습니다.
- 선택사항: SP 시작 웹 SSO 플로우를 사용할 때 다음 속성 중 하나 이상을 구성하여 사용자를 인증하는 방법을 IdP에 알리도록 규칙을 정의할 수 있습니다. forceAuthn, isPassive, allowCreate, authnContextClassRef, authnContextComparisonType.
- 선택사항: nameIDFormat 속성을 사용하여 AuthnRequest에서 필수 NameID 형식을 정의할 수 있습니다. SAML 스펙에 정의된 NameID 형식을 지정하거나 키워드 사용자 정의를 사용하여 사용자 정의 NameId 형식을 지정할 수 있습니다.
- 선택사항: 다중 samlWebSso20 요소를 작성하여 여러 SP 및 IdP 연합 파트너를 구성할 수 있으며, 각 samlWebSso20은 하나의 고유 authFilter 요소를 참조합니다. 모든 authFilters는 서로 제외합니다. 여러 samlWebSso20이 구성되어 있는 경우, 각각은 연합된 ID 제공자로 싱글 사인온을 수행할 수 있고 고유 인증 정책 및 이용 규칙을 갖습니다.
- 선택사항: IdP에서 시작된 요청되지 않은 SSO에 대한 지원을 추가하십시오.
Liberty SAML SP는 사내 구축형 IdP 메타데이터가 있는지 여부에 관계없이
IdP에서 시작된 요청되지 않은 SSO를 지원합니다. IdP 메타데이터가 없거나
요청되지 않은 SSO를 사용하여 여러 ID 제공자를 하나의 Liberty SP와
연합시키려는 경우 다음 구성을 추가해야 합니다.
- <PKIXTrustEngine>을 구성하고 모든 IdP 서명자 인증서를 Liberty 서버의 기본 신뢰 저장소 또는 PKIXTrustEngine의 trustAnchor로 가져오십시오.
- SAML 어설션에 나타난 것처럼 IdP의 발행자 이름을 나열하도록 trustedIssuers를 구성하십시오. 발행자 이름은 메타데이터에 EntityID로 사용됩니다.
- 요청되지 않은 SSO만 지원하려면 다음 단계에 설명된 대로 SP에서 시작된 요청되지 않은 SSO를 구성할 수 있습니다. 이 시나리오는 SAML과 연관된 SP의 사용자 보안 컨텍스트가 올바르지 않은 경우에 유용하며, SP가 사용자를 다시 IdP로 경로 재지정하여 요청되지 않은 SSO를 다시 자동으로 시작할 수 있습니다.
- 선택사항: SP에서 시작된 요청되지 않은 SSO에 대한 지원을 추가하십시오. Liberty SAML SP는 구성된 IdP 메타데이터를 사용하여 요청되지 않은 SAML AuthnRequest를 수행합니다. Liberty SP는 AuthnRequest를 사용하지 않고 인증되지 않은 요청을 미리 구성된 로그인 애플리케이션으로 경로 재지정할 수 있습니다. 이 시나리오는 사용자가 SAML IdP에서 인증되기 전에 비즈니스 애플리케이션이 사전 인증 처리를 수행하거나 Liberty SP에서 SAML IdP를 숨겨야 하는 경우에 유용합니다. 이 시나리오를 구성하려면 loginPageURL 속성을 추가하여 해당 값을 사용자가 SAML IdP에서 인증되도록 지시할 수 있는 URL로 설정합니다.
- 선택사항: 다음 고려사항과 함께 서명 요구사항을
구성하십시오.
- SAML 어설션. 모든 SAML 어설션은 SAML IdP가 디지털로 서명해야 합니다. 드물게 서명되지 않은 어설션을 허용하려는 경우가 있으면 wantAssertionsSigned=false를 명시적으로 구성해야 합니다.
- 기본 서명 알고리즘은 SHA256입니다. 알고리즘을 변경해야 하는 경우 signatureMethodAlgorithm 속성을 사용하여 수정하십시오.
- SAML AuthnRequest에 서명하지 않으려면 authnRequestsSigned=false를 설정할 수 있습니다.
- 선택사항: SP 인증 세션 및 쿠키를 구성할 수
있습니다. SAML 어설션을 확인하고 처리한 후 Liberty
SAML SP가 LTPA 쿠키를 사용하지 않고 브라우저와 SP 간에
인증된 세션을 유지보수합니다. 인증된 세션 제한시간은
<saml:AuthnStatement>에서 SessionNotOnOrAfter(제공되는
경우)로 설정되거나, server.xml 파일에 구성된
대로 sessionNotOnOrAfter로 설정되며, 기본값은
120분입니다. 세션 쿠키 이름은 자동으로 생성되며, spCookieName
속성에서 원하는 이름을 지정하여 쿠키 이름을 사용자 정의할 수
있습니다.
Liberty SP가 SAML 어설션에서 LTPA 쿠키를 작성하도록 하고 후속 인증 요청에 LTPA 쿠키를 사용하려는 경우, disableLtpaCookie=false 구성을 추가할 수 있습니다. 다른 서버와 LTPA 쿠키를 공유하려면 구성 속성 allowCustomCacheKey="false"를 추가해야 합니다.
참고: disableLtpaCookie="false" 및 allowCustomCacheKey="false"를 구성하는 경우, SAML 사용자 이름이 사용자가 두 개의 계정을 갖지 못하게 하는 사내 구축 환경의 사용자 레지스트리에서 직접 인증되지 않습니다. - 선택사항: 인증 필터를 구성하십시오.
samlWeb-2.0 기능이 사용 가능하면 인증되지 않은 요청이 하나의 SAML SP를 통해 인증됩니다. 사용자 정의된 samlWebSso20 요소를 정의하는 경우, 모든 인증 요청이 이 samlWebSso20 SP 인스턴스에서 처리됩니다. 그렇지 않으면 기본 인스턴스 defaultSP에서 모든 인증이 처리됩니다. authnFilter를 사용하여 인증 요청을 처리하는 SP 인스턴스를 정의할 수 있습니다.
인증 필터 구성에 대한 자세한 정보는 인증 필터를 참조하십시오.
- 선택사항: 클러스터에서 SAML SP를 구성하십시오.
애플리케이션 서버가 클러스터 멤버이고 라우터 또는 역프록시 서버를 사용하여 요청을 라우팅하는 경우 다음 태스크를 수행해야 합니다.
- 세션 선호도를 지원하도록 라우터 및 프록시 서버를 구성해야 합니다.
- 각 애플리케이션 서버에 구성 속성 spHostAndPort를 추가하고 해당 값을 라우터 또는 프록시 서버 호스트 이름 및 포트로 설정하십시오(예: spHostAndPort="https://myRouter.com:443").
- SAML AuthnRequest를 서명하기 위해 X509 인증서를 생성하고 모든 애플리케이션 서버에서 이 인증서를 사용하십시오. 예를 들어, 이 인증서만 포함하도록 키 저장소를 작성하고, KeyStoreRef를 추가하여 모든 애플리케이션 서버에서 이 키 저장소를 참조할 수 있습니다.
- createSession="true"가 클러스터 환경에
설정되지 않으면 스트레스 실행 중에 다음과 같은 오류가
발생합니다.
E CWWKS5029E: ID 제공자(IdP) 응답의 [sp_initial_KGe22fCWKG1lD9VkOMuDz0Ji8pBxFPnU] 릴레이 상태를 인식할 수 없습니다.
다음은 샘플 클러스터 구성입니다.<keyStore id="samlKeyStore" password="<password>" location="${server.config.dir}/resources/security/<samlKey.jks>" /> <samlWebSso20 id="defaultSP" spHostAndPort="https://<IHS host>:<port>" keyStoreRef="samlKeyStore" createSession="true" allowCustomCacheKey="false" disableLtpaCookie="false" mapToUserRegistry="User"> </samlWebSso20>
결과


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_config_saml_web_sso
파일 이름: twlp_config_saml_web_sso.html