
브라우저(Chrome 또는 Firefox)와 사용자 페더레이션 AD 도메인(kerberos가 구성됨)으로 구성된 keycloak을 사용하여 SSO를 작동시키려고 합니다.
먼저 내가 가지고 있는 것의 개요를 제시한 후 더 많은 세부 사항을 추가합니다.
개요:
인증 끝점 ".../auth/realms/test_realm/protocol/openid-connect/auth"를 호출하고 tcpdump를 사용하면 다음을 볼 수 있습니다.
브라우저는 필요한 매개변수를 사용하여 인증 엔드포인트에 get 요청을 보냅니다.
Keycloak은 올바르게 응답합니다.
- 401 Unauthorized -
"WWW-Authenticate: Negotiate" 헤더 포함브라우저가 새로운 가져오기 요청을 올바르게 보낸 것 같습니다.
-with "Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAGFKAAAADw=="
이것은 spnego 토큰을 보내는 것입니다.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 파일에 추가합니다.
필요한 경우 자세한 내용을 표시할 수 있지만 정보를 익명화해야 합니다.