mod-auth-openidc - mod_auth_openidc 将声明作为公共位置的 http 标头(全部授予)
问题描述
我在 apache 2.4 服务器上配置了 mod_auth_openidc。对于受保护的位置,一切正常。对于这些资源,后端应用程序(PHP 脚本或反向代理应用程序)将声明作为 HTTP 标头 OIDC_xxx 接收。
在这个网络服务器上,我也有公共位置。不过,如果经过身份验证的用户点击了这些资源中的一个,我也希望收到 OIDC 标头。
我的 httpd 配置看起来像
<Location /private>
AuthType openid-connect
<RequireAll>
Require valid-user
Require claim groups:B2C
</RequireAll>
</Location>
<Location /public>
AuthType openid-connect
<RequireAny>
Require valid-user
Require all granted
</RequireAny>
</Location>
私有位置受到 oidc 提供程序的良好保护,并且填充了 HTTP 标头。未经身份验证的用户可以访问公共位置(需要全部授权);但是有一种方法可以配置 httpd 和 mod_auth_openidc 来填充经过身份验证的用户访问公共位置的标头。上面的配置在任何情况下都不会这样做(没有 OIDC_ 标头)。
谢谢。
解决方案
有一种方法可以通过以下方式配置这种所谓的“惰性会话”:
OIDCUnAuthAction pass
在该特定位置,请参阅OIDCUnAuthAction
原语的文档:
定义在发出未经身份验证的请求时要采取的操作。
“auth”表示用户被重定向到 OpenID Connect Provider 或 Discovery 页面。
“401”表示返回 HTTP 401 Unauthorized。
“410”表示返回 HTTP 410 Gone。
“通过”意味着未经身份验证的请求将通过,但当用户碰巧已经通过身份验证时,声明仍将通过。在服务 AJAX/Javascript 调用和“匿名访问”的位置/目录/代理路径上下文中很有用。
如果未定义,则使用默认的“auth”。
OIDCUnAuthAction [auth|pass|401|410]
推荐阅读
- php - 如何在没有用户手的情况下使用 curl 刷新令牌自动将文件发送到谷歌驱动器?
- python - Django:添加新配置文件时 id 的值即将到来 None
- join - 导入、加入和创建数据集
- raspberry-pi3 - 在 windows 10 iot 上安装 3.5 英寸 rpi 显示器
- javascript - RegExp 第一个字符不能是点,只能是数字
- smartcontracts - 请告诉我有关智能资产的信息
- .htaccess - 如何使用 htaccess 重定向到一个空的 url
- windows - 当拒绝任何文件夹的权限时,cacls 或 icacls 使子文件夹仍然可以访问。任何解决方法?
- linux - 查询 mmap() 分配的大小
- python - 增加 sigmoid 预测输出值?