개요
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