繁体   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