개요

홈서버에서 사용하는 대부분의 애플리케이션들은 앞선 글에서 소개했던 OAuth/OpenID, SAML로 모두 해결할 수 있습니다.

그러나, 이런 류의 인증방식을 지원하지 않는 것들도 굉장히 많죠. 예를 들어, 토렌트 자동화에 쓰이는 Sonarr, Radarr 같은 것들이나, Plex의 서드파티 플러그인 tautulli같은 것이 대표적입니다..

*arr 시리즈만 해도 종류가 4~5가지가 넘어가는데, 이들을 하나하나 로그인해가면서 사용하는 건 너무 귀찮습니다.

Remember me를 체크해서 아이디 비밀번호를 저장할 수도 있지만, 이것도 토큰 유효기간 끝나면 풀려버리죠.

이런 류의 프로그램을 Authentik으로 인증하는 방법을 진행해 보겠습니다.

작동 방식

Proxy Provider를 구성하고 나면 LDAP때와 마찬가지로 Outpost 컨테이너가 실행됩니다.

Authentik Proxy Provider의 작동 방식과 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 내부 포트로 지정하는 설정 항목

내부 주소는 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
Authentik 애플리케이션 생성 중 Proxy Provider의 외부 호스트와 내부 호스트 및 HTTP-Basic 설정 Authentik 대시보드에서 새로운 애플리케이션 항목을 추가하기 위한 기본 정보 입력 과정 Authentik 대시보드에서 Sonarr 연동을 위해 생성한 애플리케이션의 상세 정보 요약

애플리케이션 – 애플리케이션 으로 이동해서 애플리케이션도 하나 생성해 줍니다.

생성한 Sonarr 애플리케이션을 Proxy Outpost의 애플리케이션 목록에 추가하는 설정

Proxy Outpost 생성

애플리케이션 – Outposts – 생성 을 클릭해 Proxy Outpost를 하나 생성해 줍니다.

애플리케이션 목록에 방금 생성한 sonarr를 포함해 주면 됩니다.

Authentik 대시보드에서 새로운 Proxy Outpost를 생성하고 애플리케이션을 할당하는 창

Outpost를 생성하면 LDAP때와 마찬가지로 알아서 필요한 컨테이너를 생성하고 스스로 구성합니다.

컨테이너 구성이 끝나기 전까지는 Outpost 사용 불가 상태이지만,

구성이 끝나면 사용 가능 상태로 전환됩니다.

생성된 Proxy Outpost 컨테이너가 성공적으로 구성되어 사용 가능 상태로 전환된 시스템 알림 Sonarr 보안 설정에서 인증 방식을 기본 브라우저 팝업 형식으로 변경하는 항목

Sonarr 설정

Settings – General – Security 에서 Authentication항목을 Basic (Browser Popup) 으로 설정합니다.

Forms (Login Page)로 설정할 경우 Proxy Provider로 통과하지 못합니다.

Proxy Provider 설정을 마친 후 Sonarr 접속 시 표시되는 Authentik 로그인 창

이후 sonarr.fentanest.com으로 접속하면 Authentik 로그인 화면으로 리다이렉트 되고, Authentik 로그인에 성공하면 Sonarr로그인을 자동으로 수행하는 것을 확인할 수 있습니다.

Authentik 인증을 성공적으로 통과한 후 자동으로 로그인되어 표시된 Sonarr 기본 대시보드 Proxy Outpost를 통해 통합 인증 환경이 적용된 토렌트 자동화 애플리케이션의 동작 상태 Transmission 웹 인터페이스와 Authentik Proxy 연동을 위한 내부 주소 구성 상태

이제 Radarr, Lidarr 등을 계속해서 추가하기 위해선, Provider와 애플리케이션을 생성한 뒤, Proxy Outpost에 새로 생성한 애플리케이션을 추가하기만 하면 됩니다.

Transmission과 연동하기

토렌트 클라이언트 중 많이 쓰이는 Transmission이 HTTP-Basic Authentication을 사용하기 때문에, Authentik의 Proxy를 이용해서 통합할 수 있습니다.

리버스 프록시 연결

예시 글에서는 *tcsample.fentanest.com* 을 사용합니다. 연결되는 내부 주소는 {Authentik 내부 IP:9000} 으로 설정했습니다.

Transmission 통합을 위한 리버스 프록시 구성 및 사용자 그룹 특성 정의 설정 과정

특성 정의하기

Transmission을 사용할 그룹을 생성하고 특성에 tc_user와 tc_pass를 정의합니다. Transmission Web Interface의 ID와 비밀번호를 각각 입력해 줍니다.

사용자 그룹 특성에 Transmission 인증을 위한 아이디와 비밀번호 키를 직접 지정하는 설정 Authentik 사용자 그룹 설정에서 Transmission 접근 권한 및 특성을 부여하는 관리 창

애플리케이션, 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
Transmission 연동용 Proxy Provider의 호스트와 HTTP-Basic 인증 키 지정 창 Transmission에 적용할 신규 Authentik 애플리케이션을 생성하기 위한 기본 정보 기입란 Transmission 서비스와 연동하기 위해 등록된 애플리케이션의 세부 공급자 설정 요약 정보

해당 공급자를 사용할 애플리케이션을 같이 생성하겠습니다.

기존에 구성된 Proxy Outpost 목록에 새로 생성한 Transmission 애플리케이션을 추가하는 과정

Proxy Outpost 추가

애플리케이션 – Outposts 에서 위에서 생성된 Outpost를 클릭해 방금 추가한 transmission 애플리케이션도 추가해 줍니다.

Transmission 애플리케이션을 Proxy Outpost에 추가한 후 접근할 때 나타나는 로그인 인증 창

이후, tcsample.fentanest.com으로 접속하면 Authentik로그인 화면이 나타나고, Transmssion으로 잘 이동되는 것을 확인할 수 있습니다.

Authentik 인증을 거친 뒤 성공적으로 접속된 Transmission 웹 인터페이스 기본 대시보드 Portainer와 Proxy Outpost 간의 포트 충돌로 인해 발생한 컨테이너 시작 실패 시스템 오류 로그 Proxy Outpost 컨테이너의 포트 충돌 문제를 해결하기 위해 시스템 설정에서 포트를 변경하는 과정

문제 해결(Trouble-Shooting)

포트가 이미 사용중일 경우

제 경우 Portainer에서 사용하는 포트와 Outpost가 사용하려는 포트가 겹쳐서 컨테이너가 자동으로 실행되지 못했습니다.

사용 중인 포트를 피하기 위해 새로운 포트 번호로 매핑 정보를 수정하는 도커 컨테이너 설정 항목

이 경우 컨테이너 속성에 들어가 포트를 변경해주면 됩니다.

변경된 Proxy Outpost 포트에 맞추어 리버스 프록시 연결 설정을 새롭게 갱신하는 네트워크 구성 창 포트 충돌 해결 및 리버스 프록시 설정 갱신 후 정상적으로 작동하는 컨테이너 네트워크 매핑 상태

포트를 변경했다면, 리버스 프록시에서 IP:9000으로 설정했던 부분을 맞게 수정해주시면 됩니다.