Patzer가 싱글 사인온(Single Sign-On)을 지원합니다 — 온 가족이 하나의 로그인으로 이용 가능
요약
Patzer가 Single Sign-On(SSO) 기능을 도입하여 가족 구성원들이 하나의 로그인으로 체스 서버에 접근할 수 있게 되었습니다. 이 기능은 OIDC 표준을 기반으로 하며, 복잡한 환경 변수 설정과 함께 강력한 보안 및 사용자 경험 개선을 제공합니다.
핵심 포인트
- SSO 도입으로 가족 사용 환경에서 비밀번호 관리의 불편함이 해소됩니다.
- OIDC 표준(authorization-code-with-PKCE)를 기반으로 구현되어 안정성이 높습니다.
- `OIDC_ONLY=true` 설정 시 비밀번호 로그인 및 회원가입 기능이 제거되어 보안이 강화됩니다.
- SSO 실패 시 사용자 언어의 상세한 오류 메시지를 제공하여 사용성을 높였습니다.
지난주 Patzer가 싱글 사인온(single sign-on) 기능을 도입했습니다. 만약 귀하의 가족이 이미 Authentik, Keycloak, Authelia 또는 Pocket ID를 사용하고 있다면, 집안의 모든 사람이 다른 곳에서 사용하는 것과 동일한 신원으로 체스 서버에 로그인할 수 있게 되었습니다. 더 이상 기억해야 할 추가 사용자 이름이나 비밀번호가 필요하지 않으며, 식탁에서 "비밀번호를 잊어버렸어요"라는 상황도 사라졌습니다.
작동 방식
OIDC_ISSUER,OIDC_CLIENT_ID, 그리고OIDC_CLIENT_SECRET을 설정하면 로그인 페이지에 "…로 로그인(Sign in with …)" 버튼이 생깁니다 (레이블은OIDC_BUTTON_TEXT로 선택할 수 있습니다). 이들을 설정하기 전까지는 아무것도 변경되지 않으며, 기존 설치본에는 영향을 주지 않습니다.OIDC_ONLY=true를 사용하면 UI와 서버에서 비밀번호 로그인, 회원가입 및 비밀번호 재설정 기능이 완전히 제거됩니다. 이렇게 새로 설치된 경우 설정 마법사(setup wizard)를 건너뛰게 되는데, 어차피 아무도 사용할 수 없는 비밀번호입니다. 첫 SSO 로그인이 관리자 계정을 생성합니다.OIDC_ADMIN_GROUP=patzer-admins는 제공자 그룹의 구성원을 관리자로 지정하며, 이는 매번 로그인할 때 재확인됩니다. 관리자가 존재하지 않는 동안에는 그룹 구성원만이 로그인할 수 있습니다. 따라서 새로 설치된 경우 첫 번째 관리자는 가장 빠르게 접속한 사람이 아니라 첫 번째 그룹 구성원이 됩니다.- Patzer에서 로그아웃하면 제공자(provider)에서도 로그아웃됩니다. 이는 공유하는 가족 컴퓨터에서는 중요한 문제입니다.
OIDC_AUTO_PROVISION=true는 제공자가 허용하는 모든 사람에게 계정을 생성합니다. 반면,OIDC_MATCH_BY=username|email은 첫 SSO 로그인을 기존 계정에 연결합니다 (제공자가 인증했다고 표시한 경우에만 이메일 사용). 연결된 계정은 이메일이 없는 경우 제공자의 이메일을 받게 되므로, 비밀번호 재설정 및 알림을 여전히 받을 수 있습니다.
흐름은 openid-client를 기반으로 하며 표준 권한 부여 코드(authorization-code-with-PKCE) 방식에 상태(state)와 난수(nonce)가 포함됩니다. 제가 가장 중요하게 생각하는 부분은 실패 처리입니다. SSO 로그인 실패 시, 사용자 언어로 이유(제공자 연결 불가, 취소됨, 계정 없음, 이미 연결됨, 시도 횟수 초과 등)를 담아 로그인 페이지로 돌아오며, 콜백은 IP별로 속도 제한됩니다. 따라서 Patzer는 귀하의 ID 제공자를 과부하 상태에 빠뜨리는 데 사용될 수 없습니다.
체스 앱이 SSO가 필요한 이유
Patzer는 가족 제품이며, 가족 앱에서 가장 취약한 부분은 항상 계정 레이어입니다: 아홉 살짜리 아이들이 비밀번호를 재설정하고, 형제자매들이 기기를 공유하며, '이 프로필이 누구인지?'에 답할 수 없는 체스 서버는 정말 원치 않는 상황입니다. 만약 사용자의 ID 공급자(Identity Provider)가 이미 가족 구성원을 알고 있다면, 체스 서버는 그곳에 물어보면 됩니다.
SSO 기능은 main 브랜치에 병합되었으며 다음 릴리스(v7.20)에서 배포됩니다. 전체 가이드—모든 환경 변수, SSO 전용 설정, 그리고 이것이 무엇을 보호하고 어디에 한계가 있는지에 대한 솔직한 보안 섹션—는 리포지토리의 docs/OIDC.md에 있습니다.
리포지토리: https://github.com/SikamikanikoBG/patzer — MIT 라이선스, 단일 Docker 컨테이너, Stockfish와 자체 LLM(Ollama 또는 vLLM)을 사용합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기