
Auth0을 사용한 Single Sign-On
NGINX Plus 에서 Proxy하는 애플리케이션에 대해 Auth0으로 Single Sign-On(SSO)을 활성화하는 방법을 알아봅니다.
Auth0 및 OpenID Connect와 함께 NGINX Plus를 사용하여 Proxy된 애플리케이션에 대해 Single Sign-On(SSO)을 활성화할 수 있습니다. 이 문서의 단계에 따라 인증 메커니즘으로 OpenID Connect를 사용하고, Auth0를 IdP(ID 공급자)로, NGINX Plus를 신뢰 당사자로 사용하여 SSO를 설정하는 방법을 배우게 됩니다.
프로젝트의 GitHub Repo에서 NGINX Plus OpenID Connect 통합에 대한 자세한 정보를 확인할 수 있습니다.
목차
1. 전제 조건
2. NGINX Plus 및 NJS 모듈 설치
3. Auth0 구성
3-1. 새 Auth0 애플리케이션 만들기
3-2. 웹 애플리케이션 설정
3-3. 인증 설정
4. NGINX Plus 설정
4-1. NGINX OpenID Connect 구성
5. 설정 테스트
6. 문제 해결
1. 전제 조건
이 가이드의 단계를 완료하려면 다음 사항이 필요합니다.
- 관리자 권한이 있는 Auth0 Tenant입니다.
- 유효한 구독이 있는 NGINX Plus.
- NGINX JavaScript 모듈(
njs
) –njs
모듈은 NGINX Plus와 Auth0 간의 상호 작용을 처리합니다.
2. NGINX Plus 및 NJS 모듈 설치
1. 아직 NGINX Plus를 설치하지 않은 경우, NGINX Plus 관리자 가이드의 단계에 따라 설치하세요.
2. njs 설치 가이드의 단계에 따라 NGINX JavaScript 모듈을 설치합니다.
3. NGINX Plus 구성의 최상위(“main”) 구성 컨텍스트(/etc/nginx/nginx.conf
)에 다음 지시문을 추가하여 njs
모듈을 로드합니다.
load_module modules/ngx_http_js_module.so;
3. Auth0 구성
이 섹션의 단계에 따라 NGINX Plus용 새 애플리케이션을 생성하세요.
Note: 이 섹션에는 작성 시점의 Auth0 웹 인터페이스 상태를 반영하는 이미지가 포함되어 있습니다. 실제 Auth0 GUI는 여기에 표시된 예와 다를 수 있습니다. 이 문서를 참조로 사용하고 필요에 따라 현재 Auth0 GUI에 맞게 조정하세요.
3-1. 새 Auth0 애플리케이션 만들기
1. manage.auth0.com에서 Auth0 대시보드에 로그인합니다.
2. 사이드바 메뉴에서 Applications > Applications을 선택합니다.
3. Applications 페이지에서 Create Applications 버튼을 선택합니다.
4. Create application 창에서 아래 나열된 정보를 입력한 다음 Create를 선택합니다.
- Name: 애플리케이션의 이름(예: “nginx-plus-app”).
- Application Type: Regular Web Applications

3-2. 웹 애플리케이션 설정
이 섹션에서는 Auth0 인증 코드 플로우를 따르는 웹 애플리케이션을 설정합니다.
1. Auth0 대시보드의 애플리케이션 페이지에서 웹 애플리케이션을 선택합니다.
2. 애플리케이션의 Settings 탭을 선택합니다.
3. Basic Information 섹션에 표시된 클라이언트 ID와 클라이언트 비밀번호를 기록해 두세요.

4. Application URIs 섹션의 Allowed Callback URLs 필드에 NGINX Plus 인스턴스의 URI를 입력합니다.
- URL에는 포트 번호가 포함되어야 하며 /_codexch로 끝나야 합니다. 이 예에서는
http://nginx-plus-app:8010/_codexch
URL을 사용했습니다. - HTTP(
80
) 또는 HTTPS(443
)의 기본 포트를 사용하더라도 포트는 항상 필수입니다. - Production 환경에서는 SSL/TLS(
443
)를 사용할 것을 강력히 권장합니다.

5. Advanced Settings 섹션에서 Endpoints 탭을 선택합니다.
6. OpenID Configuration URL을 기록해 두세요.

7. Save Changes을 선택합니다.
3-3. 인증 설정
Note: 이 가이드의 목적을 위해 테스트에 사용할 새 Auth0 사용자 데이터베이스와 사용자 계정을 추가하겠습니다.
사용 가능한 Auth0 ID 공급자를 사용하여 인증을 설정할 수 있습니다.
새 사용자 데이터베이스를 설정하고 여기에 사용자 계정을 추가하려면 아래 단계를 따르세요.
1. Auth0 대시보드에 로그인하고 사이드바 메뉴에서 Authentication > Database를 선택합니다.
2. Create DB Connection 버튼을 선택합니다.
3. 데이터베이스 연결의 Name을 입력한 다음 Create를 선택합니다.
4. Database 페이지에서 Applications 탭을 선택합니다. 그런 다음 이전에 만든 애플리케이션 옆의 토글 버튼을 선택합니다.

5. 사이드바 메뉴에서 User Management > Users를 선택합니다.
6. Users 페이지에서 Create User 버튼을 선택합니다.
7. Create user 창에서 다음 정보를 입력한 다음 Create를 선택합니다.
- Email: 사용자 이메일
- Password: 사용자 계정의 비밀번호
- Connection: 목록에서 데이터베이스를 선택합니다.

사용자는 제공한 이메일 주소로 이메일을 받게 됩니다. 사용자가 이메일에 포함된 링크를 클릭하여 계정을 인증하면 계정 생성 프로세스가 완료됩니다.
4. NGINX Plus 설정
이 섹션의 단계를 수행하여 NGINX Plus를 OpenID Connect 신뢰 당사자로 설정합니다.
4-1. NGINX OpenID Connect 구성
1. nginx-openid-connect GitHub Repository를 Clone하거나 Repo 파일을 다운로드합니다.
git clone https://github.com/nginxinc/nginx-openid-connect.git
2. configure.sh 스크립트를 실행하면 Auth0 애플리케이션의 값으로 NGINX 구성 파일이 업데이트됩니다.
예를 들어:
./nginx-openid-connect/configure.sh \
--auth_jwt_key request \
--client_id Nhotzxx...IERmUi \
--client_secret 6ZHd0j_r...UtDZ5bkdu \
https://<example>.us.auth0.com/.well-known/openid-configuration
3. frontend.conf
파일에서 OIDC 인증을 추가할 애플리케이션의 주소로 my_backend Upstream을 업데이트합니다.
예를 들어:
upstream my_backend {
zone my_backend 64k;
server my-backend-app.com:80;
}
4. 아래와 같이 openid_connect.server_conf 파일에서 proxy_set_header
지시문을 /_jwks_uri
및 /_token
위치에 Accept-Encoding
“gzip”으로 추가합니다.
...
location = /_jwks_uri {
...
proxy_set_header Accept-Encoding "gzip"
}
...
location = /_token {
...
proxy_set_header Accept-Encoding "gzip"
}
...
5. 다음 파일을 NGINX Plus가 설치된 호스트 환경설정 디렉토리의 /etc/nginx/conf.d 디렉토리에 복사합니다.
frontend.conf
openid_connect.js
openid_connect.server_conf
openid_connect_configuration.conf
6. NGINX 구성을 Reload합니다.
sudo nginx -s reload
5. 설정 테스트
1. 브라우저에서 NGINX Plus 인스턴스의 주소를 입력합니다. 아래 예시와 같이 Auth0 로그인 페이지로 이동해야 합니다.

2. Auth0 데이터베이스에서 생성한 사용자 계정의 자격 증명을 사용하여 로그인할 수 있어야 합니다.
6. 문제 해결
GitHub의 nginx-openid-connect
Repository에 있는 문제 해결 섹션을 참조하세요.