[英]Does Nginx open source support OpenID and JWT
我有一個基本的 Nginx docker 圖像,充當反向代理,目前使用位於我的應用程序服務器前面的基本身份驗證。 我正在尋找一種方法將它與我們使用 JWT 的開發中的 SSO 解決方案集成,但所有文檔都說它需要 Nginx+。 那么,是否可以在開源 Nginx 內部進行 JWT 驗證,還是我需要付費版本?
當然,有開源代碼,您可以根據自己的情況使用和自定義(示例)。
恕我直言,有更好的實現,您可以將其用作應用程序前面的“身份驗證代理”。 我最喜歡的是keycloak-gatekeeper (您可以將它與任何 OpenID IdP 一起使用,而不僅僅是與 Keycloak 一起使用),它可以提供身份驗證、授權、令牌加密、刷新令牌實現、占用空間小、......
還有lua-resty-openidc
: https : //github.com/zmartzone/lua-resty-openidc
lua-resty-openidc 是 NGINX 的庫,用於實現 OpenID 連接依賴方 (RP) 和/或 OAuth 2.0 資源服務器 (RS) 功能。
當用作 OpenID Connect 依賴方時,它使用 OpenID Connect 發現和基本客戶端配置文件(即授權代碼流)根據 OpenID Connect 提供者對用戶進行身份驗證。 當用作 OAuth 2.0 資源服務器時,它可以根據授權服務器驗證 OAuth 2.0 承載訪問令牌,或者,如果 JSON Web 令牌用於訪問令牌,則可以根據預先配置的密鑰/密鑰進行驗證。
鑒於您在沒有身份驗證的情況下設置了配置,我找到了它並使其工作: https : lua-resty-openidc
完全基於lua-resty-openidc
正如剛才提到的。 不過,它已經建成的事實對我很有幫助。
首先在 Okta Web GUI 中配置您的 Okta 應用程序,然后填寫在 NGINX 示例配置中未注釋掉的正確字段。 唯一需要注意的是取消對 redirect_uri 的注釋並填寫它,而是注釋掉或刪除 redirect_uri_path,這是一個不推薦使用的字段。 配置中的所有其他內容都是您可以使用的參數,也可以按原樣接受它們。
默認情況下,它會將您傳遞到標題頁面,但如果您調整 proxy_pass 字段,您應該能夠將其傳遞給您的應用程序。
基於這個要點https://gist.github.com/abbaspour/af8dff3b297b0fcc6ba7c625c2d7c0a3
這是我在 dockerfile 中的做法(基於 buster-slim )
FROM python:3.9-slim as base
FROM base as builder
ENV LANG en_GB.UTF-8 \
LANGUAGE en_GB.UTF-8 \
PYTHONUNBUFFERED=True \
PYTHONIOENCODING=UTF-8
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
build-essential \
patch \
git \
wget \
libssl-dev \
libjwt-dev \
libjansson-dev \
libpcre3-dev \
zlib1g-dev \
&& wget https://nginx.org/download/nginx-1.18.0.tar.gz \
&& tar -zxvf nginx-1.18.0.tar.gz \
&& git clone https://github.com/TeslaGov/ngx-http-auth-jwt-module \
&& cd nginx-1.18.0 \
&& ./configure --add-module=../ngx-http-auth-jwt-module \
--with-http_ssl_module \
--with-http_v2_module \
--with-ld-opt="-L/usr/local/opt/openssl/lib" \
--with-cc-opt="-I/usr/local/opt/openssl/include" \
&& make
FROM base
COPY --from=builder /nginx-1.18.0/objs/nginx /usr/sbin/nginx
COPY --from=builder /nginx-1.18.0/conf /usr/local/nginx/conf
ENV LANG en_GB.UTF-8 \
LANGUAGE en_GB.UTF-8 \
PYTHONUNBUFFERED=True \
PYTHONIOENCODING=UTF-8
RUN apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
libssl-dev \
libjwt-dev \
libjansson-dev \
libpcre3-dev \
zlib1g-dev
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.