Authentik으로 홈서버 SSO 구현하기 (4) – SAML

2025. 1. 23. 10:04·Apps
728x90
반응형

개요

SAML은 JWT기반이었던 OAuth/OpenID와 달리 XML을 기반으로 하며 각각 장단점이 있습니다.

OAuth/OpenID와 비교할 때 모바일 지원이 부족하고, JWT보다 덩치가 큰 XML을 이용함에서 오는 네트워크 대역폭, 학습곡선이 좀 더 높다는 점 등의 단점이 있다고 합니다.

그러나, 사실 네트워크 대역폭 차지 문제는 가정 환경의 소규모 서비스에서는 큰 문제가 될 수 없고, 학습곡선은… 어차피 다 처음 하는 것들인데요 =ㅅ=

여튼, 이와 관련해서 내용을 찾던 중, 이해하기 쉽게 잘 작성된 블로그가 있어 글 하단에 링크를 걸어두겠습니다.

 

Nextcloud와 연동하기

리버스 프록시 연결

이전 글과 같이 Nextcloud는 동일한 nextsample.fentanest.com을 사용합니다.

2025.01.23 - [Apps] - Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID

 

Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID

개요LDAP는 있으면 좋지만, 이것만으로는 번거로운 로그인 과정을 전부 해결할 수는 없습니다.이번 글에서는 OAuth / OpenID Provider를 설정하는 방법을 적어 보겠습니다.LDAP가 조직 내부 네트워크 인

worklazy.net

 

애플리케이션, Provider 생성하기

애플리케이션 – 공급자 – SAML Provider를 순차적으로 클릭합니다.

  • 이름 : 식별 가능한 선에서 자유롭게
  • 인증 플로우 : default-authentication-flow
  • 인가 플로우 :default-provider-authorization-implicit-consent
  • ACS URL : https://{nextcloud 주소}/apps/user_saml/saml/acs
  • 발급자 : https://{authentik 주소}
  • 서비스 공급자 바인딩 : 포스트
  • 수신처 : https://{nextcloud 주소}/apps/user_saml/saml/metadata
  • 서명 인증서 : 아무거나 무관
  • 검증 인증서 : 서명인증서 외의 것
  • 속성 매핑 : 전부 선택
  • Name ID 속성 매핑 : User ID

그 외의 값은 기본값으로 놔둔채로 Provider생성을 완료합니다.

애플리케이션 – 애플리케이션 – 생성 후 Provider와 매칭할 어플리케이션을 하나 생성해 줍니다.

이후, 시스템 – 인증서로 이동해 ‘검증 인증서’로 선택했던 인증서와 개인키, ‘서명 인증서’의 인증서 총 3개의 파일을 미리 다운로드 받아 놓습니다.

Nextcloud에 등록하기 위함입니다.

 

Nextcloud 설정하기

이전 글과 동일하게 config.php에 다음과 같은 설정이 있어야 합니다.

 

Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID

개요LDAP는 있으면 좋지만, 이것만으로는 번거로운 로그인 과정을 전부 해결할 수는 없습니다.이번 글에서는 OAuth / OpenID Provider를 설정하는 방법을 적어 보겠습니다.LDAP가 조직 내부 네트워크 인

worklazy.net

'overwriteprotocol' => 'https',

앱 – 통합 – SSO & SAML authentication를 활성화 해줍니다. 그 후 관리자 설정 – SSO 및 SAML 인증으로 이동해 내장 SAML 인증 사용으로 진행합니다.

아래와 같은 양식을 채워야 합니다.

  • Nextcloud 데스크톱 클라이언트에 SAML 인증을 사용합니다(체크)
  • [일반]UID 매핑 속성 : http://schemas.goauthentik.io/2021/02/saml/username
  • [일반]인증 공급자 표시 이름 : 내부 용도, 자유
  • [서비스 공급자 데이터 ]이름 ID 포맷 : X509 subject name
  • [서비스 공급자 데이터 ]서비스 공급자의 X.509 인증서 : 다운로드 받은 검증 인증서의 pem파일
    *메모장으로 열어서 복사-붙여넣기
  • [서비스 공급자 데이터 ]서비스 공급자의 개인 키 : 다운로드 받은 검증 인증서의 key파일
    *메모장으로 열어서 복사-붙여넣기
  • [인증 공급자 데이터]IdP 엔티티 식별자 : https://{Authentik 주소}
  • [인증 공급자 데이터]SP에서 인증 요청 메시지를 보낼 IdP 대상 URL :
    공급자의 SSO URL (Redirect)
  • [인증 공급자 데이터]SP에서 SLO 요청 메시지를 보낼 IdP 대상 URL :
    공급자의 SLO URL (Redirect)
  • [인증 공급자 데이터]IdP의 공개 X.509 인증서 : 다운로드 받은 서명 인증서의 pem파일
    *메모장으로 열어서 복사-붙여넣기
  • [속성 매핑]표시 이름 매핑 속성 :
    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
  • [속성 매핑]이메일 주소 매핑 속성 :
    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  • [속성 매핑]사용자 그룹 매핑 속성 :
    http://schemas.xmlsoap.org/claims/Group
  • 기타 그 외 보안 설정 체크

이후 설정을 완료하고 Nextcloud 주소를 접속하면 Authentik의 로그인 페이지가 나타납니다.

로그인을 시도하면 Nextcloud로 리다이렉트 되며 성공적으로 로그인을 수행하는 것을 확인할 수 있습니다.

 

추가 속성 매핑(quota)

SAML 로그인 시에도 계정 생성 시 할당 용량 제한이 가능합니다. Customization – 속성 매핑 – 생성으로 이동해서 SAML Property Mapping을 클릭합니다.

이름은 식별 가능할 정도의 이름을 자유롭게 붙여 주시고, SAML 특성 이름에 nextcloud_quota, 표현식은 아래와 같이 적습니다.

return user.group_attributes().get("nextcloud_quota", None)

그리고 Authentik의 Provider에서 속성 매핑에 새로 생성한 요소를, Nextcloud의 관리자 설정 – SSO 및 SAML 인증 – 속성 매핑에서 할당량 매핑 속성을 각각 추가 합니다.

이후, 해당 quota를 적용할 유저 혹은 그룹의 특성에 아래와 같이 nextcloud_quota 항목을 지정하면 됩니다. 예시는 80GB입니다.

아래와 같이 용량 할당이 제대로 이루어진 것을 확인할 수 있습니다.

만일 Authentik에서 SAML Property Mapping 속성을 아래처럼 구성한다면,

nextcloud_quota가 정의된 유저 혹은 그룹은 그 값을 따라가고, 해당 값이 정의되지 않은 유저는 일괄 50GB를 적용받게 됩니다.

return user.group_attributes().get("nextcloud_quota", "50G")

예를 들어, 방금 보여드린 테스트 계정을 다시 지우고, user 특성에서 nextcloud_quota를 지운 뒤 다시 로그인하며 계정 생성을 시도하면,

아래처럼 50GB의 용량이 할당되는 것을 확인할 수 있습니다.

 

TrueCommand와 연동하기

TrueNAS를 모니터링하고 관리하는데 특화되어 있는 TrueCommand도 SAML을 지원합니다.

설치도 간단합니다.

2025.01.22 - [TrueNAS] - TrueCommand 설치하기

 

TrueCommand 설치하기

개요TrueCommand는 여러 대의 TrueNAS의 관리를 쉽게 하기 위한 툴입니다. ixSystem에서 상용 라이선스를 구매하고 클라우드 환경에서 사용할 수도 있지만, 간단히 도커 이미지로도 동작할 수 있습니다.

worklazy.net

 

리버스 프록시 연결

예시에서는 https://tcd.fentanest.com 주소를 사용하겠습니다.

 

애플리케이션, Provider 생성하기

애플리케이션 – 공급자 – SAML Provider를 순차적으로 클릭합니다.

  • ACS URL : https://{TrueCommand 주소}/saml/acs
  • 발급자 : truecommand-saml
  • 서비스 공급자 바인딩 : 포스트
  • 서명 인증서 : 아무거나
  • NameID 속성 매핑 : Email

이 외의 값은 기본값으로 놔둔 채로 생성을 완료합니다.

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

그 다음 공급자로 돌아가면 관련 오브젝트 – 메타데이터 – 다운로드 URL복사 버튼이 있습니다. 해당 링크를 복사해 놓습니다.

예시에서는 아래와 같은 주소를 얻게 됩니다.

https://authsample.fentanest.com/api/v3/providers/saml/11/metadata/?download

 

추가 속성 매핑하기(필수)

TrueCommand에서는 Customization – 속성 매핑에서 필수적으로 3가지 값을 지정해야 합니다.

아래 3가지를 각각 입력해 줍니다.

그리고 필수는 아니지만, 선택적으로 넣을 수 있는 2가지 값도 같이 생성해 줍니다.

모두 생성했다면, 아래처럼 5개의 속성 매핑이 생성되어야 합니다.

이후, 공급자에서 해당 속성 매핑들을 추가해 주어야 합니다.

 

TrueCommand 설정하기

admin으로 로그인 한 뒤, 우측 상단 톱니바퀴 – Administration – Configure를 순차적으로 클릭합니다.

  • Start the SAML service(체크)
  • SAML Identity Provider URL : 위에서 복사한 주소 붙여넣기
  • SAVE(클릭)

로그아웃 후 로그인 화면으로 돌아오면 아래처럼 SAML LOGIN버튼이 생성된 것을 확인할 수 있고,

CREATE USER를 클릭함으로써 받아온 정보로 계정 생성도 잘 이루어지는 것을 확인할 수 있습니다.

 


 

관련 글

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 구현하기 (5) - Proxy

 

Authentik으로 홈서버 SSO 구현하기 (5) - Proxy

개요홈서버에서 사용하는 대부분의 애플리케이션들은 앞선 글에서 소개했던 OAuth/OpenID, SAML로 모두 해결할 수 있습니다.그러나, 이런 류의 인증방식을 지원하지 않는 것들도 굉장히 많죠. 예를

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

 


 

출처

1. https://it-ist.tistory.com/251

 

호다닥 공부해보는 SSO와 친구들 (SAML, OAuth, OIDC)

원문 : 호롤리/호다닥 공부해보는 SSO와 친구들 (SAML, OAuth, OIDC) Overview 우리는 여러 사이트를 돌아다니면서 내가 "나"임을 증명하기 위해 계정을 만들고 로그인을 하게 됩니다. 예전에는 여러 사이

it-ist.tistory.com

 

728x90
반응형
'Apps' 카테고리의 다른 글
  • Authentik으로 홈서버 SSO 구현하기 (6) – 회원 가입, 초대 코드, 소셜 로그인
  • Authentik으로 홈서버 SSO 구현하기 (5) - Proxy
  • Authentik으로 홈서버 SSO 구현하기 (3) – OAuth/OpenID
  • Authentik으로 홈서버 SSO 구현하기 (2) – LDAP
펜타네스트
펜타네스트
하라는 일은 안하고 월급루팡하고 싶은 직장인의 취미 기록장
    반응형
    250x250
  • 펜타네스트
    월급루팡의 꿈
    펜타네스트
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Apps (17)
      • Homeserver (8)
      • Kubernetes (5)
      • Nextcloud (7)
      • Proxmox (4)
      • TrueNAS (12)
      • Torrent (7)
      • ETC (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • 월급루팡의 꿈
    • 월급루팡의 일상
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
펜타네스트
Authentik으로 홈서버 SSO 구현하기 (4) – SAML
상단으로

티스토리툴바