问题标签 [lua-resty-openidc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2789 浏览

nginx - 身份验证后如何重定向回主页

我正在尝试lua-resty-openidc在 NGINX 服务器上进行配置。用户通过身份验证后,如何重定向回主页?当用户通过身份验证时,回调 url 正在从服务器获取代码、session_state 和其他参数。一旦用户通过身份验证,这会导致加载问题。用户返回的 url 类似于http://xyz.abc.com:8080/secured?code=32edkew2kjjjdf

https://github.com/pingidentity/lua-resty-openidc

我的配置如下所示。我想把用户带回http://xyz.abc.com:8080. redirect_uri 应该是什么?

0 投票
2 回答
2722 浏览

nginx - Openidc with Keycloak error uthenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端

我使用 Openresty 作为服务器。根据https://eclipsesource.com/blogs/2018/01/11/authenticating-reverse-proxy-with-keycloak/,我有 nginx 的配置文件。

我收到以下错误“openidc.lua:1053: authenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端”

有人可以提出一些建议并尝试解决问题。

问候,阿拉巴克什

0 投票
1 回答
348 浏览

nginx - 使用 lua-resty-openidc 将自定义参数与授权请求一起传递

我正在使用lua-resty-openidc将 NGINX 配置为带有授权服务器的 OIDC RP。

我的要求是在向授权服务器(来自 Nginx)的授权代码请求中传递来自 Nginx 的初始请求(来自浏览器,假设是一个查询参数)的值。

有没有办法做到这一点?感谢您对此的任何帮助。

0 投票
1 回答
3284 浏览

nginx - 通过 openresty 使用 keycloak 对 websocket 进行身份验证

目前我有一个包含以下组件的工作解决方案:

  • 具有自定义应用程序的 Web 服务器
  • Openresty 与 lua
  • 钥匙斗篷

这允许我使用 keycloak 进行身份验证。
因为我的网络服务器还公开了一个 websocket 主机,所以我也想对这些 websocket 进行身份验证。有没有人有一个示例(nginx 文件作为 lua 文件)可用于使用 openresty 验证 websocket 连接?我已经查看了https://github.com/openresty/lua-resty-websocket但似乎无法在身份验证部分找到插件的位置。
一个测试这个的示例客户端应用程序也很棒!

0 投票
1 回答
591 浏览

nginx-reverse-proxy - 是否可以用 OpenResty 在 Nginx Stream 前面实现 OIDC?

我想知道是否可以在 NGINX 流配置中使用 OpenResty OIDC 模块作为身份验证代理。

(不幸的是,我无法访问 NGINX Plus)

我过去曾使用 NGINX 和 Stream 配置来代理对上游 tcp 资源的访问,它就像一个魅力。

我目前正在考虑在各种资源(静态 html 和动态应用程序)前实现 OIDC 代理,因为我们有一个内部 OIDC IDAM 提供程序。我遇到了 OpenResty,尤其是 lua-resty-oidc 模块,感谢一些精彩的指南,(https://medium.com/@technospace/nginx-as-an-openid-connect-rp-with-wso2 -identity-server-part-1-b9a63f9bef0ahttps://developers.redhat.com/blog/2018/10/08/configuring-nginx-keycloak-oauth-oidc/),我很快就得到了这个静态工作页面,使用 http 服务器 nginx 配置。

我无法让它适用于流配置。看起来流模块已作为 OpenResty 的标准启用,但通过挖掘,我认为流上下文中不允许使用 'access_by_lua_block' 函数。

这可能根本不被支持,这在乞求别人的伟大工作时是公平的,但我想知道将来是否有打算在 OpenResty / lua-resty-oidc 中包含支持,或者是否有人知道一个好的解决方法.

这是我让它工作的天真的尝试,但服务器在运行时抱怨“access_by_lua_block”命令。

有人有什么建议吗?

0 投票
1 回答
819 浏览

nginx - 无法使用 lua nginx 配置 OIDC

我正在关注下面的博客(https://developers.redhat.com/blog/2018/10/08/configuring-nginx-keycloak-oauth-oidc/)来设置 NGINX lua oidc。以下是我的安装和设置,无法运行以下命令

结果:

0 投票
1 回答
1021 浏览

nginx - 如何在同一位置添加多个 access_by_lua_file 指令 = /_sample

在 location 下使用 openidc 模块自省并在下面使用调用,

现在我想在 lua 文件下面添加一些内容并在同一请求下验证某些内容。

而我的 oauth_introspection.lua 有这个 openidc 内省逻辑,

0 投票
1 回答
258 浏览

nginx - 根据upstream的状态码触发openidc认证

lua-resty-openidc用来实现位于我的后端系统前面的 Web UI。

后端提供 REST API,受Authorization包含 JWT 的标头保护。前端管理一个会话,如果需要登录,则将 Web 用户发送到身份提供者。当 Web 用户有会话时,前端必须查找 JWT,将其添加到 Authorization 标头中,并将请求代理到后端– 相当标准的东西。

不幸的是,我的后端并没有清楚地区分公共资源和私有资源。例如,它可能具有带有 URL 的资源:

  • /api/public/0
  • /api/public/1
  • /api/private/2
  • /api/private/3

它允许/api/public/{0,1}在没有授权标头的情况下进行请求,但/api/private/{2,3}需要授权。前端必须以某种方式处理这个问题。(注意:上面的网址是简化的,真实的不遵循模式,不容易一一列举。)

核心问题是前端无法从请求 URI 中判断是否应该触发登录。它必须是响应式的,将请求代理到后端并检查响应代码。401 代码应该强制客户端登录,但任何其他响应都应该按原样返回。

因此,我不能将我的身份验证逻辑放在一个access_by_lua块中,因为它们在请求发送到上游(后端)之前在访问阶段运行。

我尝试使用块将我的逻辑移动到内容阶段body_filter_by_lua

…但这会因错误而失败(如下所示)。似乎我在请求处理生命周期中设置标头和 cookie 为时已晚:

是否可以在Nginx 请求处理openidc.authenticate()内容阶段执行?

我应该使用更好的方法吗?

0 投票
0 回答
569 浏览

nginx - 运行时错误:/usr/local/share/lua/5.1/resty/session.lua:183: loop or previous error loading module 'resty.session.ciphers.aes'

这是我得到的错误

这里是我的 keycloak.conf nging 文件

安装的 LUA 包是 lua-cjson luaffi lua-resty-http lua-resty-jwt lua-resty-openidc lua-resty-session

我希望我安装了所需的 lua 包可能是问题出在第 25 行本地资源的 nginx 配置文件中,err = require("resty.openidc").authenticate(opts)

0 投票
1 回答
1501 浏览

nginx - Kubernetes 中的 OIDC 反向代理 sidecar

我正在尝试保护 kubernetes 上的 java 应用程序。

对于一个带有 permitAll 的简单 Springboot 应用程序,我选择了带有 lua-resty-openidc 的 openresty (nginx) 作为反向代理。

一个例子主要说明了我正在尝试做的事情:https ://medium.com/@lukas.eichler/securing-pods-with-sidecar-proxies-d84f8d34be3e

它在 localhost 中“有效”,但在 kubernetes 上无效。

这是我的 nginx.conf :

所以在本地,当我的 nginx 和我的 springboot 应用程序在本地主机上运行时,重定向正在工作。

现在,当我使用它在 kubernetes 上部署它时,浏览器不会将 localhost 与内部容器 ip 映射。

那么我如何映射这个 localhost 呢?我不希望应用程序容器被暴露,因为它没有安全性,这就是为什么我使用 nginx 作为 sidecar 并且服务只针对它。如何告诉 nginx redirect_uri 和 proxypass 到应用程序容器 ip ?

和附属问题:由于 nginx 不接受 env 变量,我应该如何使其通用,所以应用程序可以提供自己的 redirect_uri 应该在 nginx.conf 中使用?

另一个附属问题:命令 ngx.req.set_header("Authorization", "Bearer" .. res.access_token) 似乎不起作用,因为我在我的应用程序的请求中没有看到任何授权标头...