2장. 릴리스별 변경 사항
업그레이드하기 전에 이러한 변경 사항을 주의 깊게 검토하십시오.
2.1. RH SSO 7.6
Red Hat Single Sign-On 7.5에서 Red Hat Single Sign-On 7.6으로 다음과 같은 변경 사항이 발생했습니다.
2.1.1. 단계별 인증
단계별 인증은 새로운 기능입니다. 이 기능은 토큰에 acr
클레임을 추가해야 하는 프로토콜 매퍼가 포함된 acr
클라이언트 범위를 제공합니다. acr
클레임은 이 버전 이전과 마찬가지로 자동으로 추가되지 않지만 이 클라이언트 범위 및 프로토콜 매퍼를 사용하여 추가됩니다.
클라이언트 범위는 realm "default" 클라이언트 범위로 추가되므로 새로 생성된 모든 클라이언트에 추가됩니다. 성능상의 이유로 마이그레이션 중에 클라이언트 범위가 기존의 모든 클라이언트에 자동으로 추가되지 않습니다. 클라이언트는 마이그레이션 후 기본적으로 acr
클레임이 없습니다. 다음과 같은 가능한 작업을 고려하십시오.
-
단계 인증 기능을 사용하지 않지만 토큰의
acr
클레임에 의존하는 경우 Server Installation and Configuration Guide 에 설명된 대로step_up_authentication
기능을 비활성화할 수 있습니다. SSO 인증의 경우 일반 인증 및0
인 경우 클레임이 값1
로 추가됩니다. -
관리 REST API 또는 관리 콘솔을 통해 클라이언트에 수동으로
cr
클라이언트 범위를 추가합니다. 특히 단계별 인증을 사용하려는 경우 이 작업이 필요합니다. 영역에 클라이언트가 많이 있고 모든 클라이언트에 대해acr
클레임을 사용하려는 경우 DB에 대해 이와 유사한 일부 SQL을 트리거할 수 있습니다. 그러나 Red Hat Single Sign-On이 이미 시작된 경우 캐시를 지우거나 서버를 다시 시작하십시오.
insert into CLIENT_SCOPE_CLIENT (CLIENT_ID, SCOPE_ID, DEFAULT_SCOPE) select CLIENT.ID as CLIENT_ID, CLIENT_SCOPE.ID as SCOPE_ID, true as DEFAULT_SCOPE from CLIENT_SCOPE, CLIENT where CLIENT_SCOPE.REALM_ID='test' and CLIENT_SCOPE.NAME='acr' and CLIENT.REALM_ID='test' and CLIENT.PROTOCOL='openid-connect';
2.1.2. OpenID Connect Logout
이전 버전의 Red Hat Single Sign-On은 http(s)://example-host/auth/realms/my-realm-name/openid-connect/logout?redirect_uri=encodedRedirectUri와 같은 로그 아웃
끝점 URL을 열어 사용자의 자동 로그 아웃 및 리디렉션을 지원했습니다. 이러한 구현을 사용하기 쉽지만 성능과 보안에 잠재적으로 부정적인 영향을 미칠 수 있었습니다. 새 버전은 OpenID Connect RP-Initiated Logout 사양을 기반으로 logout을 더 잘 지원합니다. parameter redirect_uri
는 더 이상 지원되지 않습니다. 새 버전에서는 사용자가 로그아웃을 확인해야 합니다. 로그인에 사용되는 ID 토큰과 id_token_hint
매개변수와 함께 매개 변수 post_logout_redirect_uri
매개 변수를 포함하는 경우 확인을 생략하고 애플리케이션에 자동 리디렉션을 수행할 수 있습니다.
기존 배포는 다음과 같은 방식으로 영향을 받습니다.
-
애플리케이션에서 직접 링크를 사용하여
redirect_uri
매개변수를 사용하여 로그아웃 끝점에 대한 링크를 사용하는 경우 위에서 설명한 대로 변경해야 할 수 있습니다.redirect_uri
매개변수를 완전히 제거하거나id_token_hint
및post_logout_redirect_uri
매개변수로 교체하는 것이 좋습니다. -
Java 어댑터를 사용하고 애플리케이션이
httpServletRequest.logout()
호출을 통해 로그아웃하는 경우 이 호출에서 logout 끝점의 백채널 변형을 사용하며 변경되지 않았기 때문에 영향을 받지 않습니다. -
최신 javascript 어댑터를 사용하는 경우에도 영향을 받지 않습니다. 그러나 애플리케이션이 이전 버전의 JavaScript 어댑터를 사용하는 경우 이 어댑터는 더 이상 사용되지 않는
redirect_uri
매개변수와 함께 logout 끝점의 변형을 사용하므로 영향을 받습니다. 이 경우 최신 버전의 JavaScript 어댑터로 업그레이드해야 할 수 있습니다. -
Node.js 어댑터의 경우 JavaScript 어댑터와 동일한 지침이 적용됩니다. 이전 버전의 어댑터에서 더 이상 사용되지 않는
redirect_uri
매개변수를 사용하므로 최신 버전으로 업데이트하는 것이 좋습니다. 최신 Node.js 어댑터에서는 문서 또는 Node.js 어댑터 예제에 설명된 대로/logout
URL을 기반으로 logout을 사용하는 한 영향을 받지 않습니다. 그러나 애플리케이션에서keycloak.logoutUrl
메서드를 직접 사용하는 경우 이 메서드에idTokenHint
를 두 번째 인수로 추가하는 것이 좋습니다. 두 번째 인수로idTokenHint
를 추가할 가능성이 이 버전에 새로 추가되었습니다.idTokenHint
는 로그인 중에 가져온 유효한 ID 토큰이어야 합니다.idTokenHint
를 추가하는 것은 선택 사항이지만 생략하면 사용자는 앞서 설명한 대로 로그 아웃 화면을 확인해야 합니다. 또한 로그아웃 후 다시 애플리케이션으로 리디렉션되지 않습니다.
이전 버전과의 호환성 옵션이 있으므로 애플리케이션이 여전히 이전 형식의 redirect_uri
매개변수를 사용할 수 있습니다.
standalone-*.xml
파일에 다음 구성을 포함하여 이 매개변수를 활성화할 수 있습니다.
<spi name="login-protocol"> <provider name="openid-connect" enabled="true"> <properties> <property name="legacy-logout-redirect-uri" value="true"/> </properties> </provider> </spi>
이 구성을 사용하면 여전히 redirect_uri
매개변수와 함께 형식을 사용할 수 있습니다. id_token_hint
가 생략된 경우 확인 화면이 필요합니다.
이전 버전과의 호환성 전환은 일부 이후 버전에서 제거됩니다. 이 스위치에 의존하는 대신 위에서 설명한대로 최대한 빨리 클라이언트를 업데이트하는 것이 좋습니다.
2.1.3. upload-scripts
기능 제거
이전 버전의 Red Hat Single Sign-On은 관리 콘솔 및 REST API와 같은 관리 인터페이스를 통해 JavaScript 코드 관리를 지원했습니다. 이 버전에서 시작하는 경우 더 이상 사용할 수 없으며 다음 공급자를 구성하기 위해 서버에 스크립트를 배포해야 합니다.
- OpenID Connect 스크립트 맵퍼
- script Authenticator(Authentication Execution)
- JavaScript 정책
서버에 스크립트를 배포하는 방법에 대한 자세한 내용은 설명서에서 확인할 수 있습니다. 스크립트를 사용하려면 스크립트
기술 프리뷰 기능을 활성화해야 합니다.
./standalone.sh -Dkeycloak.profile=preview
스크립트를 배포할 때 서버는 인증 흐름, 매퍼 및 권한 부여 정책을 구성할 때 선택할 수 있도록 해당 공급자를 자동으로 생성합니다.
일반적으로 영역을 업데이트하는 단계는 다음과 같습니다.
- 업그레이드하기 전에 사용 중인 스크립트 공급자를 제거하십시오.
- 업그레이드 후 문서 의 지침에 따라 스크립트를 배포합니다.
- 서버에 배포된 스크립트에서 생성된 공급자를 사용하도록 인증 흐름, 매퍼 및 클라이언트 권한 부여 설정을 업데이트합니다.
2.1.4. 계정 콘솔 Patternfly upgrade
Patternfly (PF) React 라이브러리가 업데이트되었으며, @patternfly/react-core
from v3.153.3에서 v4.147.0, @patternfly/react-icons
from v3.15.16에서 v 4.11.8로, @patternfly/react-styles
가 v4.11.8로 업데이트되었습니다. 계정 콘솔을 PF 설계 표준과 일치하도록 몇 가지 사소한 UI가 업데이트되었습니다.
PF의 중단으로 인해 사용자 정의 개발 계정 UI가 이러한 업데이트와 호환되지 않을 수 있습니다. 대부분의 변경 사항은 PF 구성 요소에 대한 props를 업데이트하여 재배치할 수 있어야 합니다.
resources:
- [PatternFly docs](https://www.patternfly.org)
변경 사항이 있는 것으로 알려진 구성 요소:
- 경고
-
action
prop이action 10.0.0.1으로 변경되었습니다.
- 확장 가능
-
ExpandableSection
으로 이름 변경 - 제목
-
이제 크기 attr에서
제목Sizes
사용 - DataListContent
-
noPadding
이hasNoPadding
로 변경되었습니다. - 그리드, 스택, 레벨, Restic
-
Gutter
attr이hasGutter
로 변경되었습니다. - modal
-
ModalVariant , 예를 들어
variant={
를 사용하도록 크기 조정 제어가 에서 변경되었습니다.ModalVariant
.large} - 선택 사항
-
ariaLabelTypeAhead
totypeAheadAriaLabel
-
isExpanded
toisOpen
-
ariaLabelledBy
toaria-labelledby
- DataListContent
-
noPadding
tohasNoPadding
2.1.5. 클라이언트 정책 마이그레이션: 클라이언트 범위
클라이언트 범위 조건을 포함하여 정책을 사용하고 JSON 문서를 직접 편집한 경우 JSON 문서의 "범위" 필드 이름을 "범위"로 변경해야 합니다.
2.1.6. Liquibase가 버전 4.6.2로 업그레이드
Liquibase는 버전 3.5.5에서 4.6.2로 업데이트되었습니다. 여기에는 ServiceLoader
를 사용하여 사용자 정의 확장을 등록하는 새로운 방법이 포함되어 있습니다.
업그레이드 전에 기존 데이터베이스를 백업하는 등 업그레이드 가이드에 대해 자세히 따르십시오. Liquibase 업그레이드의 결과를 테스트하기 위해 최선을 다했지만 일부 설치에서는 알 수 없는 특정 설정을 사용할 수 있습니다.
2.1.7. Red Hat Single Sign-On Operator에서 더 이상 사용되지 않는 기능
이번 릴리스에서는 Red Hat Single Sign-On Operator의 Keycloak CR에 더 이상 사용되지 않는 podDisruptionBudget
필드가 있습니다. 이 선택적 필드는 Operator가 OCP 4.12 이상 버전에 배포되면 무시됩니다.
이 문제를 해결하려면 클러스터에서 Pod 중단 예산을 수동으로 생성할 수 있습니다. 예를 들면 다음과 같습니다.
apiVersion: policy/v1 kind: PodDisruptionBudget metadata: labels: app: keycloak name: keycloak spec: maxUnavailable: 1 selector: matchLabels: component: keycloak
Kubernetes 문서 도 참조하십시오.
2.1.8. Red Hat Single Sign-On Operator의 중요한 버그 수정
이전 버전의 Operator에 도입된 중요한 버그로 인해 RH-SSO StatefulSet의 Selector
필드가 잘못 구성되었습니다. 잘못된 구성로 인해 업그레이드 프로세스가 7.5에서 7.6로 중단되어 RH-SSO 배포가 성공할 수 있습니다.
Operator 패치 릴리스를 통해 수정 사항이 추가되었습니다. 수정의 일환으로 Operator는 7.5에서 7.6로 업그레이드하는 동안 RH-SSO StatefulSet을 삭제하고 다시 생성할 수 있습니다. 수정 사항이 제대로 작동하려면 재현
업그레이드 전략을 사용해야 합니다. 서버 설치 및 구성 가이드의 관련 장을 참조하십시오.
2.1.9. Red Hat Single Sign-On Operator 7.6.2를 사용하는 경우 프로브 변경
Red Hat Single Sign-On OpenShift 이미지의 변경 사항에 맞게 7.6.2에 도입된 OpenShift 이미지의 변경 사항에 맞게 Operator는 이제 사용자 정의 이미지를 사용하는 대신 이미지에 있는 기본 활성 및 준비 상태 프로브를 활용합니다. 기존 Red Hat Single Sign-On 배포의 경우 Operator는 업그레이드하는 동안 프로브를 자동으로 업데이트합니다. 그러나 keycloak-probes
ConfigMap에 대한 수동 변경을 수행하여 프로브를 사용자 지정한 경우 Operator는 사용자 수정 사항을 재정의하지 않도록 프로브를 업데이트하지 않습니다. 이 경우 프로브를 수동으로 업데이트하거나 Operator를 다시 생성하려면 ConfigMap을 삭제해야 합니다. 그러지 않으면 업그레이드된 Red Hat Single Sign-On 7.6.2 배포가 준비되지 않은 상태로 표시됩니다.
2.1.10. Red Hat Single Sign-On Operator 7.6.5 사용 시 프로브 변경
FIPS가 활성화된 환경에서 실행할 수 있도록 프로브 인증 해시 알고리즘이 변경되었습니다. 프로브에 대한 기본 시간 초과가 1초이고 CPU 제한을 1보다 적게 지정하는 템플릿 기반 설치의 경우 프로브 오류가 발생할 수 있습니다. 이러한 실패가 다시 시작되면 DeploymentConfig를 변경하거나 새로 릴리스된 템플릿을 재지정하여 프로브 시간 초과를 늘려야 합니다. 이로 인해 Operator에서 사용되는 것과 일치하는 시간 초과 값이 더 많습니다.
2.1.11. 계정 콘솔 버전 1에서 단계별 인증을 사용하지 않는 것이 좋습니다.
단계별 인증과 관련하여 계정 콘솔 V1에 대한 제한 사항이 있습니다. 문제는 사용자가 암호를 사용하여 계정 콘솔 버전 1에 인증한 다음 TOTP 인증 정보를 사용자에게 추가하거나 기존 TOTP 인증 정보를 제거할 수 있다는 것입니다. 이는 사용자의 암호를 훔치기 위해 관리하는 모든 사람이 다른 TOTP를 추가하여 사용자의 두 번째 요인 인증을 우회할 수 있음을 의미합니다. 계정 콘솔 버전 2에서는 이 문제가 발생하지 않습니다(Red Hat Single Sign-On 7.6.8)에서 지원합니다. 해당 버전은 항상 사용자를 적용하여 사용자를 추가 또는 제거할 해당 수준의 자격 증명으로 인증합니다.
최상의 완화 방법은 단계별 인증을 사용할 때 계정 콘솔 버전 1을 사용하지 않는 것입니다. 계정 테마가 keycloak
테마로 명시적으로 전환되면 계정 콘솔 버전 1이 작동합니다.
2.1.12. Admin send-verify-email API는 Red Hat Single Sign-On 7.6.10으로 업그레이드한 후 동일한 이메일 확인 템플릿을 사용합니다.
PUT /admin/realms/{realm}/users/{id}/send-verify-email
이번 릴리스에서는 API에서 executeActions.ftl
대신 email-verification.ftl
템플릿을 사용합니다.
업그레이드 전
Perform the following action(s): Verify Email
업그레이드 후
Confirm validity of e-mail address email@example.org.
executeActions.ftl
템플릿을 사용자 지정하여 사용자가 이 API를 사용하여 이메일을 확인하는 방법을 수정한 경우 새 템플릿으로 수정 사항을 전송해야 합니다.
기본 라이프사이클 값(12시간)을 재정의할 수 있도록 lifespan
이라는 새 매개변수가 도입됩니다.
이전 동작을 선호하는 경우 다음과 같이 execute-actions-email
API를 사용합니다.
PUT /admin/realms/{realm}/users/{id}/execute-actions-email ["VERIFY_EMAIL"]