簡體   English   中英

Nginx開源是否支持OpenID和JWT

[英]Does Nginx open source support OpenID and JWT

我有一個基本的 Nginx docker 圖像,充當反向代理,目前使用位於我的應用程序服務器前面的基本身份驗證。 我正在尋找一種方法將它與我們使用 JWT 的開發中的 SSO 解決方案集成,但所有文檔都說它需要 Nginx+。 那么,是否可以在開源 Nginx 內部進行 JWT 驗證,還是我需要付費版本?

當然,有開源代碼,您可以根據自己的情況使用和自定義(示例)。

恕我直言,有更好的實現,您可以將其用作應用程序前面的“身份驗證代理”。 我最喜歡的是keycloak-gatekeeper (您可以將它與任何 OpenID IdP 一起使用,而不僅僅是與 Keycloak 一起使用),它可以提供身份驗證、授權、令牌加密、刷新令牌實現、占用空間小、......

還有lua-resty-openidchttps : //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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM