问题标签 [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.
javascript - 如果 Keycloak 身份验证是在 Apache 级别而不是前端应用程序上完成的,有没有办法获取用户数据
通常,至少有 2 种使用 Keycloak OpenID Connect 堆栈保护应用程序的选项:
- 在使用 Keycloak 的应用程序上使用它
adapters
(在我的例子中,一个 SPA javascript 前端) - 在 Apache 上使用它
mod_auth_openidc
如果我选择使用数字 2,我如何获取用户数据(例如用户名)?
------------------------------------由于@Cyril Dangerville的回答而编辑-----
虽然我了解一般方法,但我的方式似乎非常强迫。
现在我已通过身份验证,我的请求具有会话 cookie 和访问令牌标头,但由于是初始页面加载,无法访问任何标头
调用任何受保护的资源以获取访问标头值
使用访问令牌调用 userinfo 端点(但这是在另一个域上,因此 cookie 不会被提交)
你能帮我解释一下我应该去哪里吗?
keycloak - 无法执行 Keycloak 单次注销
我有两个应用程序,比如说 App1 和 App2。App1 使用 mod_auth_openidc 进行保护,App2 托管在 wildfly 上并使用 keycloak 特定的 java 适配器进行保护。SSO 在这两个应用程序上都能正常工作。但是,在注销的情况下会出现问题。当我从 App1 执行注销时,两个应用程序都被重定向到下一个请求时登录(如预期的那样)。但是,当我在 App2 上执行注销时,App1 仍然正常工作,而不是在下一次请求时再次要求登录。
根据 keycloak 文档,应为特定客户端设置管理 URL,Keycloak 服务器可以使用该客户端向应用程序发送后端请求以执行各种任务,例如注销用户或推送撤销策略。
从 apache 日志中,我看不到 keycloak 针对 App2 执行的注销生成的任何后端请求。如果我从 keycloak 管理实用程序生成注销,则 apache 日志会显示 k_logout 的发布操作。
我想,我缺少一些配置,但不知道是什么?在这方面的任何想法/帮助将不胜感激。非常感谢。
更多详细信息:
App1 - 基于 Django 的 Web 应用程序。这是使用 Apache 托管并使用 mod_auth_openidc 保护的。下面给出了 apache 和 mod_auth_openidc 配置。
App2 - Spring MVC(Java)。这部署在 Wildfly 上,并使用 keyclaok 适配器进行保护(按照此处提到的过程)。
Keycloak 配置 - 两个应用程序都使用此处描述的设置在 keycloak 中进行配置。
Apache 和 mod_auth_openidc 配置为:
使用的不同系统的版本有:
- mod_auth_openidc 2.3.7
- 阿帕奇 2.4.34
- Ubuntu 16.4
- 钥匙斗篷 4.2.1
openid-connect - 如果请求失败,如何使 Keycloak 自动重定向到登录页面
我有一Keycloak
台服务器并mod_auth
在 Apache 上使用来管理请求。
目前,在我的客户端应用程序中,当我遇到401
请求时,我会触发 location.reload() 并因此被重定向到Keycloak
日志记录页面。但是这种感觉很不自然。
我想问一下是否有另一种办公方式可以从Keycloak
侧/服务器端自动重定向?
//////已编辑////
我为 Apache 使用 mod_auth_openidc,这意味着客户端没有适配器
Keyckoak 版本:4.4.0
apache - 如何使用 mod_auth_openidc 将用户声明传递给上游层?
我已经使用 Auth0 和 Google App Oauth 成功地使用 mod_auth_openidc 配置了 apache Web 服务器来保护我们的内部仪表板,如本文档中所述:- https://github.com/zmartzone/mod_auth_openidc#openid-connect-sso-with-google -登录 - https://auth0.com/docs/quickstart/webapp/apache/01-login (不使用auth0规则管道)
我的问题是如何将用户的声明作为 http 标头传递给上游层(我们的内部工具/仪表板)?是否可以?
问候, 阿贡
更新
我已经尝试过这里的建议,这是我的 /etc/apache2/sites-available/000-default.conf 的片段
我使用 echoserver (gcr.io/google_containers/echoserver:1.0) 作为http://echo-server.default.svc.cluster.local:8080的后端,并且它不会将任何用户的声明打印为 http 标头。我是否有任何错误配置?如何调试这个问题?
keycloak - Keycloak、mod_auth_openidc 和反向通道注销
环境:
- Debian 8
- mod_auth_openidc 2.3.9
- Keycloak 4.4.0.Final
- 阿帕奇 2.4.10
不确定这是 Keycloak 还是 mod_auth_openidc 问题,但让我们看看这会将我们带到哪里......
我正在尝试使用上述配置进行反向通道注销。我的理解是,如果我点击 mod_auth_openidc 注销 URL(http://host/redirect_url?logout=http://host/..),这将反过来调用 Keycloak SSO 注销 URL。然后这将回调所有支持反向通道注销的 RP,以便让他们有机会杀死自己的会话。
我已经确定确实调用了 Keycloak 注销 URL,但是我的应用程序(使用 mod_auth_openidc 保护)永远不会被回调。我可以在 Keycloak 日志中看到以下内容:
15:18:28,672 调试 [org.keycloak.services.managers.AuthenticationManager](默认任务 1)反向通道注销到:ultradev
15:18:28,675 调试 [org.keycloak.services.managers.ResourceAdminManager](默认任务 1)无法注销 {0}:没有记录的适配器会话
这向我表明 mod_auth_openidc 未注册为 Keycloak“适配器”。我也不确定 Keycloak 是否支持 OpenIDC 规范的反向通道注销,或者这是否有自己的专有机制。Keycloak 不会在其元数据端点中宣传对反向通道注销的支持。
无论如何,我的问题归结为:是否支持使用 mod_auth_openidc 针对 Keycloak 的反向通道注销?我发现关于此的 Keycloak 文档有些令人困惑,所以我完全有可能做错了什么。我是否需要编写 Keycloak 适配器才能完成这项工作?
只是想知道是否有任何其他 mod_auth_openidc 用户在这里有任何经验。
谢谢!
apache2.4 - mod_auth_openidc 与 Apache2.4 反向代理
我正在尝试使用 OpenID 为 Centreon Web 应用程序设置 SSO。这是架构: Apache 2.4 (windows) with mod_auth_openidc 2.3.9 Centreon 2.8.17
我只希望一个虚拟主机通过 SSO 进行身份验证,因此我将所有 openidc conf 添加到 vhost.conf 文件中:
在 Centreon 上,我们唯一要做的就是提供包含用户登录名的 HTTP 标头的名称(请参阅文档): CENTREON SSO CONF
当我转到https://myserver.com时,它会将我重定向到 SSO 登录页面。从这里我能够识别并且我被重定向到 Centreon 但未登录,因此它将我重定向到 Centreon 登录页面。在 centeron login.log我有:
它表明 Centreon 在“MY_HEADER”标头中没有收到任何内容,因此 SSO 身份验证不起作用。
附加信息:(不知道它是否有用):我的 Apache 反向代理正在侦听负载均衡器后面的 http(80),该负载均衡器侦听 HTTPS(443)并将其传输到 HTTP(80)上的服务器
我的问题:我不确定包含用户名的标题名称。在上面的配置中,有人可以确认 Centreon 应该收到一个包含用户名的标题“MY_HEADER”吗?谢谢
spring-security - 缺少 Id_Token Spring Oauth2 身份验证服务器和 mod_auth_openidc
我正在尝试让 Spring 安全授权服务器为运行 mod_open_idc 的 Apache2 后面保护的资源工作。当我访问我的资源时,它会将我重定向到登录页面,但在我登录后,我会被重定向到显示处理响应类型错误的页面。如果我查看 apache 错误日志,它会说oidc_proto_validate_code_response: requested flow is "code" but no "id_token" parameter found in the code response
。最后返回 url /redirect_uri?code=f0I4GB&state=DdA1Udo1lllEeed3V8LppkOtxPg
。这是我的 apache 配置的相关部分
我也很高兴发布任何弹簧代码,我只是不知道哪些部分可能有问题。我也不知道我配置不正确的部分,我的直觉说 mod_auth_openidc,但它可能是春天。
mod-auth-openidc - FusionAuth 和 auth_openidc_module jwt.payload 处理
我打算使用 Apache httpd 服务器并将 FusionAuth 集成为 OpenId 提供程序。我添加了auth_openidc_module
(https://github.com/zmartzone/mod_auth_openidc/)Apache 模块来处理OAUTH2
协议。
授权以以下错误消息结束:
oidc_proto_validate_nonce:id_token JSON 有效负载不包含“nonce”字符串
有效负载看起来像(子键和应用程序 ID 匿名):
“nonce”值似乎是单独传输的,不被auth_openidc_module
.
如何配置FusionAuth
或auth_openidc_module
建立成功的授权?
apache2 - mod_auth_openidc 错误 400 错误请求 - cookie 太多(?)
我在example.org/portia/test上有一个由 Nginx 映射的容器,结构如下:
- 容器仅公开端口 9001,作为代理的 Apache 实例正在侦听该端口。
- 一个 Django 服务器在 8000 上运行,/api 和 /server_capabilities 的所有流量都发送给他。
- 另一个 Django 服务器在 9002 上运行,它处理 /ws 路径上的 websocket。
我正在尝试使用 Apache 的 mod_auth_openidc 插件添加 OpenIdConnect 身份验证,我想保护整个虚拟主机。
到目前为止,我到达了 auth-example.org 上的正确登录页面,我使用我的凭据登录,并且身份验证服务器使用正确的 URI 重定向我。Ngnix 用 400 错误回答我。
auth 服务器被 mydomain.org 中的多个应用程序使用,所以我猜我的 Apache 配置文件有问题。
为清楚起见,我无法触及 Nginx 或身份验证服务器配置文件。
apache_site.conf
openid-connect - OpenID Connect 如何利用用户信息进行授权?
我正在使用mod_auth_openidc来处理既没有身份验证也没有授权的 API。同一个端点也为 UI 提供服务,因此它具有交互和服务器到服务器的查询。这是模块的AuthType auth-openidc
用途。因此该模块在 OAuth2 中充当资源服务器。
在配置这个时,我意识到我接受来自密码授权的访问令牌,所以我的所有用户都有分配给他们的角色,我们并没有真正在客户端 ID 上使用范围。所以,很自然,我想通过这样的角色限制对端点的访问:
验证端点是一个符合RFC 7662标准的库存盒,配置基本上是教科书示例。
我的转折是Require
authz。使用 OAuth2 远程验证时,openid-connect 似乎不会查找远程用户的用户信息,它只是复制它从/introspect
端点获取的所有属性并尝试将 Require 与它匹配。
我的问题/userinfo
是:一旦拥有远程用户,我如何让 openid-connect 查找相应的用户信息(通过对现有端点的调用)?