예시 SSO 구현
이 예에서 SSO는 SUSE Multi-Linux Manager로 3개의 엔드포인트를 노출하고 Keycloak 21.0.1 이상을 ID 서비스 공급자(IdP)로 사용하여 구현됩니다.
Keycloak IdP를 설치한 후 SUSE Multi-Linux Manager 서버를 설정하여 시작하십시오. 그런 다음 엔드포인트를 Keycloak 클라이언트로 추가하고 사용자를 생성할 수 있습니다.
이 예는 설명 목적으로만 제공됩니다. SUSE는 타사 ID 서비스 제공자를 권장하거나 지원하지 않으며 Keycloak과 제휴하지 않습니다. Keycloak 지원에 대해서는 https://www.keycloak.org/를 참조하십시오. |
Keycloak을 시스템에 직접 설치하거나 컨테이너에서 실행할 수 있습니다. 이 예에서는 Podman 컨테이너에서 Keycloak을 실행합니다. Keycloak 설치에 대한 자세한 내용은 https://www.keycloak.org/guides#getting-started에서 Keycloak 설명서를 참조하십시오.
-
Keycloak 설명서에 따라 Podman 컨테이너에 Keycloak을 설치합니다.
-
프로세스를 계속 실행하려면
-td
인수를 사용하여 컨테이너를 실행하십시오.podman run -td --name keycloak -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:21.0.1
-
관리
사용자로 Keycloak Web UI에 로그인하고 다음 세부 정보를 사용하여 인증 영역을 생성합니다.-
이름
필드에 영역 이름을 입력합니다. For example,MLM
. -
엔드포인트
필드에서SAML 2.0 ID 공급자 메타 데이터
링크를 클릭합니다. 그러면 SUSE Multi-Linux Manager 구성 파일에 복사할 엔드포인트와 인증서가 표시되는 페이지로 이동합니다.
-
Keycloak을 설치하고 영역을 생성한 후에는 SUSE Multi-Linux Manager 서버를 준비할 수 있습니다.
-
SUSE Multi-Linux Manager 서버에서
/etc/rhn/rhn.conf
구성 파일을 열고 이러한 파라미터를 편집합니다. Replace<FQDN_MLM>
with the fully qualified domain name of your SUSE Multi-Linux Manager installation:java.sso.onelogin.saml2.sp.entityid = https://<FQDN_MLM>/rhn/manager/sso/metadata java.sso.onelogin.saml2.sp.assertion_consumer_service.url = https://<FQDN_MLM>/rhn/manager/sso/acs java.sso.onelogin.saml2.sp.single_logout_service.url = https://<FQDN_MLM>/rhn/manager/sso/sls
-
구성 파일에서
<FQDN_IDP>
를 Keycloak 서버의 정규화된 도메인 이름으로 바꿉니다. Replace<REALM>
with your authentication realm, for exampleMLM
:java.sso.onelogin.saml2.idp.entityid = http://<FQDN_IDP>:8080/realms/<REALM> java.sso.onelogin.saml2.idp.single_sign_on_service.url = http://<FQDN_IDP>:8080/realms/<REALM>/protocol/saml java.sso.onelogin.saml2.idp.single_logout_service.url = http://<FQDN_IDP>:8080/realms/<REALM>/protocol/saml
-
IdP 메타데이터에서 공용 x509 인증서를 찾습니다.
http://<FQDN_IDP>:8080/realms/<REALM>/protocol/saml/descriptor
의 형식을 사용하십시오. 이 구성 파일에서 IdP의 공용 x509 인증서를 다음과 같이 지정합니다.java.sso.onelogin.saml2.idp.x509cert = -----BEGIN CERTIFICATE----- <CERTIFICATE> -----END CERTIFICATE-----
SSO를 활성화한 후 SUSE Multi-Linux Manager에서 rhn.conf
의 예는 다음과 같습니다.
java.sso = true # This is the configuration file for Single Sign-On (SSO) via SAMLv2 protocol # To enable SSO, set java.sso = true in /etc/rhn/rhn.conf # # Mandatory changes: search this file for: # - YOUR-PRODUCT # - YOUR-IDP-ENTITY # # See product documentation and the comments inline in this file for more # information about every parameter. # # # # # If 'strict' is True, then the Java Toolkit will reject unsigned # or unencrypted messages if it expects them signed or encrypted # Also will reject the messages if not strictly follow the SAML # # WARNING: In production, this parameter setting parameter MUST be set as "true". # Otherwise your environment is not secure and will be exposed to attacks. # Enable debug mode (to print errors) # Identifier of the SP entity (must be a URI) java.sso.onelogin.saml2.sp.entityid = https://MLMserver.example.org/rhn/manager/sso/metadata # Specifies info about where and how the <AuthnResponse> message MUST be # returned to the requester, in this case our SP. # URL Location where the <Response> from the IdP will be returned java.sso.onelogin.saml2.sp.assertion_consumer_service.url = https://MLMserver.example.org/rhn/manager/sso/acs # Specifies info about where and how the <Logout Response> message MUST be # returned to the requester, in this case our SP. java.sso.onelogin.saml2.sp.single_logout_service.url = https://MLMserver.example.org/rhn/manager/sso/sls # Identifier of the IdP entity (must be a URI) java.sso.onelogin.saml2.idp.entityid = http://idp.example.org:8080/realms/MLM # SSO endpoint info of the IdP. (Authentication Request protocol) # URL Target of the IdP where the SP will send the Authentication Request Message java.sso.onelogin.saml2.idp.single_sign_on_service.url = http://idp.example.org:8080/realms/MLM/protocol/saml # SLO endpoint info of the IdP. # URL Location of the IdP where the SP will send the SLO Request java.sso.onelogin.saml2.idp.single_logout_service.url = http://idp.example.org:8080/realms/MLM/protocol/saml # IdP의 공개 x509 인증서 java.sso.onelogin.saml2.idp.x509cert = -----BEGIN CERTIFICATE----- MIIClzCCAX8CBgGC+tPbVjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDARTVU1BMB4XDTIyMDkwMTIwNTEwNFoXDTMyMDkwMTIwNTI0NFowDzENMAsG A1UEAwwEU1VNQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMNSWJAalB5mShTkMBO5mrsOosyheEL8/A37WvuqDPwwEfm4x0cG7gmMHvONxYXZk+LRyzoQl2sBrNFrbMuwu5dnah5ZSMxQyUu697S280m4vIiegGaFdbgH+g4FGBu eSis1ssMzTcES+NUuI7pLkMLNmSQtncESnoL9q2SyeQSwYtr5dz1ydl6IzjwtaWeyQ9EGJNtJtLk3U4+arLPCpHAwqFAnLO9NeYcRDNUKhNBs1v5mHP+L066PZu1/DkE0mSgy/+qXaS0CgZVKqz8qB+bvHVuAq9W60g1CjqZKbwvPu72p/7+d8z 9DxXPIZ1uxdqn19q/kLEP2TYLtgQobSHECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAga+raLMJDo/P/yN1Z6SGGocK227WFqovBiE/mLYlp5Ff0+0jS1US1plSppJ94xOr8j0m7HW0Wu5xCz6oOhzXTEtnfIbeRyr1Rms3BWdxyXgQ9bWUeZMWZ HfDkTbhgRRmjDEwSSfEXRKQNvw41CpnlB36I0++ejgGnjDvH7BbkCaoW55JF5j6DT/WYR0n7MkEl2Ova9CH0e9X7Gny8iOAg26oziy06uy3P/lx9Z9RmHnvpvN/Q34SGEq9z/HlQVuP12UPj//iT21Jc17OOZFsZQXlGFTG6bXKmO42W8FdUDJU ONoXZgjMb3eC7U691YyeowoqTY7mJKxNPprYY/lL0w== -----END CERTIFICATE----- # Organization java.sso.onelogin.saml2.organization.name = SUSE Manager admin java.sso.onelogin.saml2.organization.displayname = SUSE Manager admin java.sso.onelogin.saml2.organization.url = https://MLMserver.example.org java.sso.onelogin.saml2.organization.lang = # Contacts java.sso.onelogin.saml2.contacts.technical.given_name = SUSE Manager admin java.sso.onelogin.saml2.contacts.technical.email_address = MLM@example.org java.sso.onelogin.saml2.contacts.support.given_name = SUSE Manager admin java.sso.onelogin.saml2.contacts.support.email_address = MLM@example.org
SUSE Multi-Linux Manager 엔드포인트를 Keycloak에 추가할 수 있습니다. Keycloak은 엔드포인트를 클라이언트로 참조합니다.
-
Keycloak Web UI에서 다음 세부 사항을 사용하여 새 클라이언트를 생성합니다.
-
클라이언트 유형
필드에서SAML
을 선택합니다. -
클라이언트 ID
필드에서 서버 구성 파일에 지정된 엔드포인트를java.sso.onelogin.saml2.idp.entityid
로 입력합니다. For example,https://<FQDN_MLM>/rhn/manager/sso/metadata
.
-
-
설정
탭에서 다음 세부 정보를 사용하여 클라이언트를 미세 조정합니다.-
서명 어설션
스위치를켜짐
으로 토글합니다. -
서명 알고리즘
필드에서RSA_SHA1
을 선택합니다. -
SAML 서명 키 이름
필드에서키 ID
를 선택합니다.
-
-
키
탭에서:-
클라이언트 서명 필요
를끄기
로 설정합니다.
-
-
세분화된 SAML 엔드포인트 구성
섹션의고급
탭에서 다음 세부 정보를 사용하여 엔드포인트 두 개를 추가합니다.-
두
어설션 소비자 서비스
필드에, 서버 구성 파일에 지정된 엔드포인트를java.sso.onelogin.saml2.sp.assertion_consumer_service.url
로 입력합니다. For example,https://<FQDN_MLM>/rhn/manager/sso/acs
. -
두
로그아웃 서비스
필드에, 서버 구성 파일에 지정된 엔드포인트를java.sso.onelogin.saml2.sp.single_logout_service.url
로 입력합니다. For example,https://<FQDN_MLM>/rhn/manager/sso/sls
.
-
엔드포인트를 클라이언트로 추가하면 클라이언트 범위를 구성하고 Keycloak과 SUSE Multi-Linux Manager 간에 사용자를 매핑할 수 있습니다.
-
Keycloak Web UI에서
탭으로 이동하여role_list
를 기본 클라이언트 범위로 할당합니다. -
탭으로 이동하여 기본값을 사용해 사용자 속성uid
에 대한 매퍼를 추가합니다. 이 SAML 특성은 SUSE Multi-Linux Manager에 필요합니다. -
로 이동하여역할_목록
매퍼를 클릭합니다.단일 역할 속성
을켜기
로 설정합니다. -
섹션으로 이동하여 관리 사용자를 생성합니다. 이 사용자는 SUSE Multi-Linux Manager 관리 사용자와 일치하지 않아도 됩니다.
-
탭으로 이동하여 SUSE Multi-Linux Manager 관리 사용자의 사용자 이름과 일치하는 값을 갖는uid
라는 속성을 추가합니다. -
탭으로 이동하여 SUSE Multi-Linux Manager 관리 사용자가 사용하는 것과 동일한 비밀번호를 설정합니다. . 변경 사항을 저장합니다.
구성을 완료하면 설치가 예상대로 작동하는지 테스트할 수 있습니다. SUSE Multi-Linux Manager 서버를 재시작하여 변경 사항을 적용하고 SUSE Multi-Linux Manager Web UI로 이동합니다. 설치가 올바르게 작동하면 성공적으로 인증할 수 있는 Keycloak SSO 페이지로 리디렉트됩니다.