Docker에서 OAuth2Proxy 샘플 이동
6223 단어 Docker
이 경우 웹 응용 프로그램의 전면에 OAuth2 Proxy 이라는 리버스 프록시를 배치하는 옵션이 있습니다.
이걸 해보고 싶어서 Docker로 동작을 해봤어요. 그래서 그 방법을 적어놨어요.
※ 이번에는 G Suite 기반의 SSO 설치 예시를 썼습니다. OAuth2에 대응하는 IdP라면 대체적으로 같은 방법을 사용할 수 있을 것 같습니다.
코드
용기 세 개를 시작합니다.
version: '3'
services:
proxy:
build: proxy
ports:
- 8000:4180
environment:
OAUTH2_PROXY_HTTP_ADDRESS: 0.0.0.0:4180
OAUTH2_PROXY_PROVIDER: google
OAUTH2_PROXY_CLIENT_ID: 00000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
OAUTH2_PROXY_CLIENT_SECRET: XXXXXXXXXXXXXXXXXXXXXXXX
OAUTH2_PROXY_EMAIL_DOMAINS: example.com
OAUTH2_PROXY_UPSTREAMS: http://web/
OAUTH2_PROXY_COOKIE_SECRET: Tg06aGvkpWU2S_sryFWGYg==
OAUTH2_PROXY_SESSION_STORE_TYPE: redis
OAUTH2_PROXY_REDIS_CONNECTION_URL: redis://redis/
# 以下、HTTPS ではなく HTTP で動かすための設定
OAUTH2_PROXY_COOKIE_SECURE: 'false'
OAUTH2_PROXY_REDIRECT_URL: http://localhost:8000/oauth2/callback
web:
build: web
redis:
image: redis
volumes:
- redis:/data
volumes:
redis:
OAuth2Proxy는 명령 옵션과 파일 설정 등 여러 가지 방법으로 옵션을 지정할 수 있지만 Docker 용기로 이동할 때 환경 변수로 지정하는 것은 이론이죠.환경 변수로 옵션을 지정한 경우 OAUTH2_PROXY_
prefix가 필요합니다.클라이언트 ID와 클라이언트 시크릿의 획득 방법은 공식 문서에 적혀 있기 때문에 사랑을 끊는다.
이번에는 대충 해보고 싶어서 HTTP로 돌리지만 실제 생산 환경에서 작동할 때는 증명서를 설치하고 HTTPS로 돌리는 것이 좋다.
다음은 Docker 이미지의 설정입니다.
[2021.06 추기] 공식 Docker 이미지도 있는 것 같다: quay.io/oauth2-proxy/oauth2-proxy
proxy/Dockerfile
FROM alpine
ARG VERSION=v5.1.1
ARG FILENAME=oauth2_proxy-${VERSION}.linux-amd64.go1.14.2
RUN wget -q https://github.com/oauth2-proxy/oauth2-proxy/releases/download/${VERSION}/${FILENAME}.tar.gz \
&& tar xzf ${FILENAME}.tar.gz \
&& mv ${FILENAME}/oauth2_proxy /bin/ \
&& rm -rf ${FILENAME}*
CMD ["/bin/oauth2_proxy"]
OAuth2Proxy는 구축된 바이너리 파일만 다운로드하면 됩니다. 아주 쉽습니다.web/Dockerfile
FROM php:apache
RUN echo "<?php\nphpinfo();" > /var/www/html/index.php
인증 후 표시되는 웹 응용 프로그램은 무엇이든 가능하지만 예를 들어 PHP로 표시하기로 결정했습니다phpinfo()
.행위
docker-compose up
에 액세스하면 로그인 화면이 표시됩니다.http://localhost:8000/
로그인에 성공하면 웹 응용 프로그램이 표시됩니다.
웹 응용 프로그램이 수신한 요청 헤더를 살펴보면 OAuth2Proxy 측에서 전송
phpinfo()
X-Forwarded-Email
X-Forwarded-For
등을 알 수 있다.로그인 중인 사용자를 식별하기만 하면 이 정보는 충분하다.메일 주소와 사용자 ID 이외의 정보(예를 들어 G Suite 계정에 설정된 이름과 아이콘 등)를 얻으려면 지정
X-Forwarded-User
하면 요청 헤더에 부여OAUTH2_PROXY_PASS_ACCESS_TOKEN: 'true'
하기 때문에 이 요청 헤더 호출 API 등을 이용하면 된다.또 신경 쓰이는 것은 로그인 화면의 UI를 사용자 정의할 수 없다는 것이다.
X-Forwarded-Access-Token
에서 건너뛸 수 있지만
Reference
이 문제에 관하여(Docker에서 OAuth2Proxy 샘플 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hoto17296/items/7f78416965e4ae289de0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)