개요
홈서버에서 사용하는 대부분의 애플리케이션들은 앞선 글에서 소개했던 OAuth/OpenID, SAML로 모두 해결할 수 있습니다.
그러나, 이런 류의 인증방식을 지원하지 않는 것들도 굉장히 많죠. 예를 들어, 토렌트 자동화에 쓰이는 Sonarr, Radarr 같은 것들이나, Plex의 서드파티 플러그인 tautulli같은 것이 대표적입니다..
*arr 시리즈만 해도 종류가 4~5가지가 넘어가는데, 이들을 하나하나 로그인해가면서 사용하는 건 너무 귀찮습니다.
Remember me를 체크해서 아이디 비밀번호를 저장할 수도 있지만, 이것도 토큰 유효기간 끝나면 풀려버리죠.
이런 류의 프로그램을 Authentik으로 인증하는 방법을 진행해 보겠습니다.
작동 방식
Proxy Provider를 구성하고 나면 LDAP때와 마찬가지로 Outpost 컨테이너가 실행됩니다.
이번 방식에서는, 리버스 프록시로 개별 서비스에 직접 접근하지 않고, Authentik으로 인증을 진행할 모든 서비스의 리버스 프록시는 이 Outpost 컨테이너로 보내게 됩니다.
a.example.com, b.example.com, c.example.com… 모두 10.10.10.10:9000 으로 보내지고,
Outpost컨테이너는 사전에 정의된 ID/PW를 함께 담아 개별 서비스로 다시 보내주는 방식으로 작동하게 됩니다.
아래 개별 서비스로 예시를 들어보겠습니다.
Sonarr와 연동하기
이하 Radarr, Lidarr, Prowlarr 등 *arr 형제는 모두 같은 방식으로 진행합니다.
리버스 프록시 연결
내부 주소는 sonarr 주소가 아니라 {Authentik 내부 IP:9000}으로 설정하셔야 합니다.
위에서 설명했듯, Outpost 컨테이너로 가야 하기 때문입니다.
특성 정의하기
이 방식의 인증을 사용할 때는, 로그인할 ID와 PW를 Authentik에서 사용자(혹은 그룹)의 특성에 직접 정의해주어야 합니다.
해당 특성을 가진 사용자가 프록시를 통해 접근하면 보유한 ID와 PW를 토큰처럼 사용해서 인증을 통과하는 방식입니다.
저는 아래처럼 arr_user라는 이름의 그룹을 하나 생성하고, 그룹 특성으로 arr_user와 arr_password라는 특성을 정의했습니다.
이제 다른 사용자를 이 그룹에 추가해주면, 해당 사용자는 이 특성을 사용할 수 있게 됩니다.
애플리케이션, Provider 생성하기
애플리케이션 – 공급자 – Proxy Provider를 순차적으로 클릭합니다.
- 이름 : 식별 가능한 선에서 자유롭게
- 인증 플로우 : default-authentication-flow
- 인가 플로우 : default-provider-authorization-implicit-consent
- 탭 선택 : ‘프록시‘
- 외부 호스트 : 리버스 프록시로 연결한 주소
- 내부 호스트 : 내부 네트워크 IP:PORT
- 인증서 : 아무거나
- Authorization header 가로채기 (체크)
- HTTP-Basic 인증 전송 (체크)
- HTTP-Basic 사용자명 키 : arr_user
- HTTP-Basic 비밀번호 키 : arr_password
애플리케이션 – 애플리케이션으로 이동해서 애플리케이션도 하나 생성해 줍니다.
Proxy Outpost 생성
애플리케이션 – Outposts – 생성을 클릭해 Proxy Outpost를 하나 생성해 줍니다.
애플리케이션 목록에 방금 생성한 sonarr를 포함해 주면 됩니다.
Outpost를 생성하면 LDAP때와 마찬가지로 알아서 필요한 컨테이너를 생성하고 스스로 구성합니다.
컨테이너 구성이 끝나기 전까지는 Outpost 사용 불가 상태이지만,
구성이 끝나면 사용 가능 상태로 전환됩니다.
Sonarr 설정
Settings – General – Security에서 Authentication항목을 Basic (Browser Popup)으로 설정합니다.
Forms (Login Page)로 설정할 경우 Proxy Provider로 통과하지 못합니다.
이후 sonarr.fentanest.com으로 접속하면 Authentik 로그인 화면으로 리다이렉트 되고, Authentik 로그인에 성공하면 Sonarr로그인을 자동으로 수행하는 것을 확인할 수 있습니다.
이제 Radarr, Lidarr 등을 계속해서 추가하기 위해선, Provider와 애플리케이션을 생성한 뒤, Proxy Outpost에 새로 생성한 애플리케이션을 추가하기만 하면 됩니다.
Transmission과 연동하기
토렌트 클라이언트 중 많이 쓰이는 Transmission이 HTTP-Basic Authentication을 사용하기 때문에, Authentik의 Proxy를 이용해서 통합할 수 있습니다.
리버스 프록시 연결
예시 글에서는 tcsample.fentanest.com을 사용합니다. 연결되는 내부 주소는 {Authentik 내부 IP:9000}으로 설정했습니다.
특성 정의하기
Transmission을 사용할 그룹을 생성하고 특성에 tc_user와 tc_pass를 정의합니다. Transmission Web Interface의 ID와 비밀번호를 각각 입력해 줍니다.
애플리케이션, Provider 생성하기
애플리케이션 – 공급자 – Proxy Provider를 순차적으로 클릭합니다.
- 이름 : 식별 가능한 선에서 자유롭게
- 인증 플로우 : default-authentication-flow
- 인가 플로우 :default-provider-authorization-implicit-consent
- 탭 선택 : ‘프록시‘
- 외부 호스트 : 리버스 프록시로 연결한 주소
- 내부 호스트 : 내부 네트워크 IP:PORT
- 인증서 : 아무거나
- Authorization header 가로채기 (체크)
- HTTP-Basic 인증 전송 (체크)
- HTTP-Basic 사용자명 키 : tc_user
- HTTP-Basic 비밀번호 키 : tc_pass
해당 공급자를 사용할 애플리케이션을 같이 생성하겠습니다.
Proxy Outpost 추가
애플리케이션 – Outposts에서 위에서 생성된 Outpost를 클릭해 방금 추가한 transmission 애플리케이션도 추가해 줍니다.
이후, tcsample.fentanest.com으로 접속하면 Authentik로그인 화면이 나타나고, Transmssion으로 잘 이동되는 것을 확인할 수 있습니다.
문제 해결(Trouble-Shooting)
포트가 이미 사용중일 경우
제 경우 Portainer에서 사용하는 포트와 Outpost가 사용하려는 포트가 겹쳐서 컨테이너가 자동으로 실행되지 못했습니다.
이 경우 컨테이너 속성에 들어가 포트를 변경해주면 됩니다.
포트를 변경했다면, 리버스 프록시에서 IP:9000으로 설정했던 부분을 맞게 수정해주시면 됩니다.
관련 글
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (1) – 설치
Authentik으로 홈서버 SSO 구현하기 (1) – 설치
개요여러가지 도커 이미지를 이용해 셀프 호스팅으로 서비스를 올려보고 사용해보는 재미에 빠지다 보면 만나는 문제가 한 가지 있습니다. 바로 서비스에 접속할 때마다 일일히 로그인을 해야
worklazy.net
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (2) – LDAP
Authentik으로 홈서버 SSO 구현하기 (2) – LDAP
2025년 1월 6일 변경사항 : LDAP Provider 변경된 버전에 맞춰 내용 수정 LDAP 구성하기실생활에서 LDAP를 제일 쉽게 접할 수 있는 곳은 회사입니다. 로그인, 네트워크 장치 정보 등을 중앙에 모아놓고
worklazy.net
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID
Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID
개요LDAP는 있으면 좋지만, 이것만으로는 번거로운 로그인 과정을 전부 해결할 수는 없습니다.이번 글에서는 OAuth / OpenID Provider를 설정하는 방법을 적어 보겠습니다.LDAP가 조직 내부 네트워크 인
worklazy.net
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (4) – SAML
Authentik으로 홈서버 SSO 구현하기 (4) – SAML
개요SAML은 JWT기반이었던 OAuth/OpenID와 달리 XML을 기반으로 하며 각각 장단점이 있습니다. OAuth/OpenID와 비교할 때 모바일 지원이 부족하고, JWT보다 덩치가 큰 XML을 이용함에서 오는 네트워크 대역
worklazy.net
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (6) – 회원 가입, 초대 코드, 소셜 로그인
Authentik으로 홈서버 SSO 구현하기 (6) – 회원 가입, 초대 코드, 소셜 로그인
개요Authentik의 Provider를 이용해 많은 서비스를 연동하는 것까진 완료했지만, 아직 회원을 받는 기능은 없습니다.주변 지인들에게 계정을 발급할 때, 하나하나 생성해 주어야 하는 귀찮은 점은 아
worklazy.net
2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (7) – 시놀로지 회원 가입(계정 자동 생성) 구현하기
Authentik으로 홈서버 SSO 구현하기 (7) – 시놀로지 회원 가입(계정 자동 생성) 구현하기
개요시놀로지는 다 좋고 편한데 회원 가입을 능동적으로 처리하는 기능이 없습니다. 기본 기능만을 사용할 경우, 관리자가 계정을 생성하고 사용자가 최초 로그인 시 무조건 비밀번호를 변경하
worklazy.net