Windows AD에 대한 Kerberos 통합을 통한 사용자 페더레이션을 사용하여 브라우저와 Keycloak 간에 SSO가 작동하지 않습니다.

Windows AD에 대한 Kerberos 통합을 통한 사용자 페더레이션을 사용하여 브라우저와 Keycloak 간에 SSO가 작동하지 않습니다.

브라우저(Chrome 또는 Firefox)와 사용자 페더레이션 AD 도메인(kerberos가 구성됨)으로 구성된 keycloak을 사용하여 SSO를 작동시키려고 합니다.

먼저 내가 가지고 있는 것의 개요를 제시한 후 더 많은 세부 사항을 추가합니다.

개요:
인증 끝점 ".../auth/realms/test_realm/protocol/openid-connect/auth"를 호출하고 tcpdump를 사용하면 다음을 볼 수 있습니다.

  1. 브라우저는 필요한 매개변수를 사용하여 인증 엔드포인트에 get 요청을 보냅니다.

  2. Keycloak은 올바르게 응답합니다.
    - 401 Unauthorized -
    "WWW-Authenticate: Negotiate" 헤더 포함

  3. 브라우저가 새로운 가져오기 요청을 올바르게 보낸 것 같습니다.
    -with "Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAGFKAAAADw=="
    이것은 spnego 토큰을 보내는 것입니다.

  4. Keycloak은 "200 OK"로 응답하지만 로그인 페이지에는 토큰이나 콜백 URL이 없고 Keycloak 로그에 오류가 없습니다.

Q: 여기서 keycloak은 무엇에 응답해야 합니까? 다음과 같은 쿠키를 사용하여 콜백 URL로 보내야 합니다.KEYCLOAK_IDENTIT그리고KEYCLOAK_SESSION, 오른쪽? 이 쿠키를 사용하면 토큰 엔드포인트를 호출하여 애플리케이션에서 사용할 토큰을 얻을 수 있습니다.

Q: 무엇이 빠졌는지 아시나요? 나는 많은 부분이 있다는 것을 알고 있지만 어쩌면 분명한 것이 빠졌을 수도 있습니다.

수동 로그인을 수행할 때 토큰 엔드포인트를 호출하고 토큰을 가져오는 데 사용할 수 있는 쿠키 KEYCLOAK_IDENTIT 및 KEYCLOAK_SESSION을 반환하는 login-actions/authenticate 엔드포인트를 호출합니다.
테스트 도메인에 로그인한 사용자와 동일한 사용자를 사용하고 있으므로 keycloak이 테스트된 사용자를 인증할 수 있다는 것을 알고 있습니다.


이제 좀 더 자세한 내용으로

Keycloak을 구성하기 위해 공식 문서를 따랐습니다.https://www.keycloak.org/docs/latest/server_admin/

Windows 클라이언트 컴퓨터(브라우저 Chrome 또는 Firefox, 둘 다 테스트):
- 화이트리스트에 URL을 추가했습니다.
- 필요한 매개변수를 사용하여 인증 끝점을 호출합니다.

Windows Server 2019 AD 도메인에서 - ktpass를
사용하여 keytab 파일을 만들었습니다.
/out testdomainlocal_keytab_file.keytab /princ HTTP/[이메일 보호됨]/mapuser keycloak_kerberos /pass "somepass" /crypto All /ptype KRB5_NT_PRINCIPAL /kvno 1
- 사용자 keycloak_kerberos가 내 테스트 도메인에 존재합니다.

Linux rhel8.8에는 keycloak 22.01이 있습니다.
- "영역 조인"을 사용하여 테스트 도메인에 Linux 시스템을 추가했습니다
. - LDAP 테스트 사용자를 수동으로 인증할 수 있는 LDAP AD에 대한 설정 사용자 연합을 추가했습니다.
- 주체와의 Kerberos 통합을 활성화하고 AD 시스템에서 생성된 키탭
- 도메인 정보를 /etc/krb5.conf 파일에 추가합니다.

필요한 경우 자세한 내용을 표시할 수 있지만 정보를 익명화해야 합니다.

관련 정보