问题标签 [mod-auth-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 投票
1 回答
728 浏览

keycloak - 反向代理下的keycloak/mod_auth_openidc

我的 openid 有一个登录页面,如果尚未授权,它将重定向到 Keycloak,然后在验证后重定向到我的登录页面。我在 Apache mod_proxy 下使用了我的 keycloak 服务器。

配置成功。现在,我的问题是,即使我的应用程序(Gitbucket 和 Jenkins)对我的 mod_auth_openidc 使用相同的领域,我仍然需要登录应用程序(SSO 设置),即使我在访问我的登录页面时已经过验证。请查看链接上的图片:https ://ibb.co/VND01SY !https://ibb.co/VND01SY

^这是我目前的配置。

我的预期输出应该是:

如果尚未通过 Keycloak 验证: 1. 访问 index.html -> 如果第一次登录,则重定向到 Keycloak 2. 验证后重定向到 index.html(其中包含指向 Jenkins 和 Gitbucket 的链接) 3. 单击应用程序链接时,我不需要重新登录同一个领域。

如果我对场景的理解是正确的,请纠正我。

我也不知道如何使用注销以及登录页面和 SSO 的注销位置。

0 投票
1 回答
466 浏览

mod-auth-openidc - 使用 mod_auth_openidc 进行可选或匿名身份验证

是否可以在 mod_auth_openidc 中执行相当于 prompt=none 尝试使用来自已登录用户的凭据访问受保护的网站,但如果没有则回退到允许未经身份验证的访问?

我运行一个无需任何身份验证即可供公众访问的网站,但也为登录的用户提供额外的可选功能。我想使用 mod_auth_openidc 来允许用户登录,但如果我使用模块保护我的页面,它会强制在访问页面之前登录(如您所料),如果我不保护我的页面,那么即使我已经登录,我也看不到 OIDC 变量。

因此,您将访问该网站并查看主页。该页面上有一个登录按钮。当您登录时,您仍在主页上,但现在您会看到额外的内容(例如个性化的欢迎信息)。

到目前为止,我唯一的解决方案是让我的整个网站在两个不同的 url 上可用,一个受 openidc 保护,一个不受保护。当您登录时,您将被重定向到另一个站点。但这可能会使用户感到困惑,甚至会混淆需要配置 baseURL 的服务器端软件。

我可以通过其他方式轻松实现这一点,但我找不到基于 mod_auth_openidc 模块的解决方案。

我试过这个:

我希望会发生的是,去 /example/protected 需要我登录(确实如此),然后返回 /example/public 仍然会知道我已经登录。但是尽管 /example/protected 有效很好(所以我的基本设置是正确的), /example/public 根本不起作用 - 没有设置变量,所以我仍然没有登录。

是否有一个 Require 选项可以做我想要的,或者其他一些干净的答案?

0 投票
1 回答
524 浏览

mod-auth-openidc - 提交表单时刷新 mod_auth_openidc 上的访问令牌

我成功地使用 mod_auth_openidc 来验证我的网站并获得 access_token。我可以使用 access_token 以登录用户身份向托管在其他地方的第三方资源验证我的服务器端代码。

如果访问令牌过期,我需要刷新它,而 mod_auth_openidc 似乎需要我对特定 url 进行重定向调用才能这样做。如果我所在的页面是 GET 请求,那很好。该页面注意到令牌已过期,并且重定向返回到同一页面。但如果是 POST、PUT 或 DELETE 请求,最终的刷新仍然是 GET。

因此,除非我编写一些非常脏的代码来隐藏原始页面及其全部细节,否则我似乎被卡住了。

相比之下,我可以轻松地进行服务器端调用来刷新令牌,而不涉及模块,但是模块不知道令牌已更新,更新后的令牌将丢失。

特定的用例是我向用户展示一个表格,要求他们填写,然后发送出去。生成的帖子数据用于调用第三方 API。但如果用户填写表单的时间过长,POST 调用的访问令牌已过期,无法刷新。

有没有办法解决这个问题,还是我需要恢复使用特定于语言的库来完成我所有的 openid 和 oauth 工作?

0 投票
1 回答
285 浏览

mod-auth-openidc - 取消保护特定当整个站点受到 mod-auth-openidc 保护时

我有一个带有 mod-auth-openidc 的 apache 2.4 站点保护。有没有办法取消保护该保护区内的特定物品?现在我的 apache 配置有一小段,其中 mod-auth-openidc 配置为保护整个站点。我发现在 137 个可能的 137 中,有 3 个不需要保护。如果没有办法取消保护 a 那么我将不得不单独保护或取消保护所有 137 。这是很多配置更改。

过去,我可以通过创建标签并指定 Allow from all 和 Satisfy any 来取消对特定位置的保护。这在使用 mod-auth-openidc 时不起作用。我还发现了一篇关于使用 SetEnvIf 提供公共访问权限的帖子,但这也不起作用。

我不会在我的 apache 配置中创建 137 个配置段落。如果没有解决方案,我将不得不放弃这个项目。

0 投票
0 回答
244 浏览

apache - Docker - Apache2,设置 OpenIDC 后出现 Nginx 错误 502(网关错误)

我有一个 webApp,我为它创建了一个 docker 映像,然后进行部署。

一切正常,但现在我为 , 添加了一个新模块Apache2OpenIDC (auth_openidc_module)最后设法正确设置它。

给你一个想法,当我点击我的 webApp 的 url 时,它会将我重定向到我们的身份服务器,在那里你进行身份验证,然后它最终会将你重定向到 webApp。

我现在遇到的问题如下

部署后,需要配置我的 webApp,为此,我访问其管理面板并设置所有内容。

问题是,现在使用OpenIDC模块,首先我被重定向到 IdentityServer,然后到我的管理面板登录屏幕,在这里,当我输入凭据时,我得到一个:

同时,如果我没有进入管理面板,而是编写了我的 webapp 页面的 url,它可以工作,所以我认为正在发生的事情,cookie 或我不知道的一些设置一定有问题。

当我点击管理面板登录时,我有 2 个会话 cookie,一个来自 OpenIDC,一个来自我的 webapp。

根据开发工具,cookie 大小是101(41+60),如果这很重要的话。

在 Docker 上,我看到了日志,尝试登录管理面板时出现的错误是:

有任何想法吗?所以基本上这个 502 错误是在我尝试在我的 WebApp 中进行“登录”时出现的,由于 OpenIDC 模块,我通过了身份验证来访问它。

如果我只是浏览我的 webApp 的单个页面,它就可以工作,只是所有需要输入凭据的东西都不能。

0 投票
0 回答
1096 浏览

mod-auth-openidc - 如何正确使用 OIDCUnAuthAction 传入 mod_auth_openidc?

我只想使用 mod_auth_openidc 进行身份验证,方法是使用 REMOTE_USER 中设置的内容。

目前,我有这个:

用户访问由登录他们的应用程序托管的 url。登录后,每个页面上都有附加信息,并且允许访问一些返回 401 的 url。

现在我想在其中添加 OIDC,所以我尝试添加以下内容:

访问“/oidc”成功重定向到提供者,然后重定向回应用程序中不存在的/oidc,因此apache进入404。

如果我去其他任何地方,则没有设置 REMOTE_USER,因此用户未通过身份验证。(我有一个调试页面,为此转储标题和环境变量以及其他杂项。)

我发现了这个问题:Optional or anonymous authentication with mod_auth_openidc,其中提到了 OIDCUnAuthAction,但不清楚如何使用它。

如果我将第一个位置块更改为:

..然后用户不再被重定向。

如果我另外添加OIDCUnAuthAction auth到第二个位置块,则重定向将返回,并且用户将返回到被重定向到 /oidc 并且不会在其他任何地方进行身份验证。

如果我保留 /oidc-block 的最新版本并将第一个块更改为

..这不会改变任何事情。

如果我确实在任何地方强制登录,使用

然后访问任何页面将我重定向到提供者,该提供者将我重定向到我来自的地方。在调试页面上,我看到有很多声明标头,但 REMOTE_USER 要么未设置,要么设置为无法转储(应用程序不可见),因此用户未通过身份验证

如果我使用OIDCAuthNHeader Foo它与其他 http 标头一起使用,前缀为HTTP_,但是应用程序找不到它,因为它没有命名REMOTE_USER......

我无计可施。这应该如何工作?它可以工作吗?

0 投票
1 回答
273 浏览

apache - Openid 在回调 url 上连接 SSL_PROTECTION_ERROR

我正在尝试在我的网站上实施 OIDC 登录系统。我正在使用 openID 连接发现从 .well-known/openid-configuration 收集所有必需的信息。我已经设法进入登录部分和所有内容,但是当 IDP(身份提供者)试图重定向到我的站点以返回用户信息时,我得到了 SSL_PROTECTION_ERROR。更具体地说,谷歌浏览器返回这个

“此站点无法提供安全连接 10.10.10.10 发送了无效响应。ERR_SSL_PROTOCOL_ERROR”

我不确定如何配置我的 apache 服务器以启用 SSL,或者我猜这就是问题发生的原因。

我的重定向网址如下: https://10.10.10.10:3000/secure/redirect

我的 Apache 配置文件如下所示:

感谢所有帮助,我对服务器端的东西很陌生,我在解决这个问题时遇到了问题。

兄弟,维克多

0 投票
0 回答
592 浏览

session - mod_auth_openidc - OIDCSessionInactivityTimeout 不起作用 - 401

我在 auth_openidc.conf 中设置了 OIDCSessionInactivityTimeout。

当非活动超时命中时,后续调用会返回 401。如果我刷新页面,我的会话将恢复正常并且所有调用都会通过。

当非活动超时命中时,我不会被重定向回 OP 进行重新身份验证。

我不确定我在这里缺少什么(conf 中的另一个设置?)​​。

0 投票
0 回答
195 浏览

java - 如何从 Java 访问受 mod_auth_openidc 代理保护的 REST API?

我们的票务系统服务器由带有 mod_auth_openidc(为 OpenID 连接配置)的 Apache 代理保护,使用 Auth0 来管理用户。这在从 Web 浏览器访问票证系统时效果很好:用户在其浏览器中显示 Auth0 的登录页面,登录后被重定向到正确的票证系统网站。现在,我想从 Java 程序另外访问票务系统的 REST API。我的 REST 客户端没有准备好处理带有登录页面的 HTML,我想避免不得不从 Java 调用浏览器来处理登录并以某种方式从中窃取会话 cookie。相反,我希望用户能够在普通的 Java 胖客户端文本字段中输入他的凭据,并以 mod_auth_openidc 跳过 HTML 登录页面并直接从 REST API 提供 JSON 的方式提供它们。我的程序如何以这种方式向代理提供用户凭据?我需要更改服务器配置中的某些内容吗?您对我应该在身份验证标准和库的丛林中查看的位置有任何提示吗?

0 投票
1 回答
74 浏览

apache - Apache LocationMatch 命名正则表达式的奇怪行为

我正在尝试使用 OpenID auth 为许多目录创建动态 apache 配置,但我从来没有让它工作,我认为命名正则表达式有问题,但我不知道。

这是我的虚拟主机配置:

每当我尝试访问时,我得到了 401,我也尝试使用编号的正则表达式,但如文档中所述,编号的正则表达式被忽略。