Apache 授权使用 SQL 服务器数据库中的 require dbd-group

Apache authorization using require dbd-group from SQL Server database

我在 CentOS 7 上的 Apache 2.4.6 上的反向代理后面有一个应用程序 运行。我正在使用 Shibboleth 进行身份验证,目前正在使用 AuthGroupFile /path/to/authfile 和 [= 通过白名单进行授权14=]。这目前适用于我的设置。我正在尝试更改此过程以针对存储在 SQL 服务器数据库中的白名单进行授权,事实证明这很困难。

目前在 conf.d/shib.conf 我有以下内容:

DBDriver odbc
DBDParams "DATASOURCE=ODBCconn,USER=myUser,PASSWORD=myPwd"

<Location /authLocation>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  Require dbd-group myApp
  AuthzDBDQuery "SELECT appName FROM authTable WHERE UserLogin = %s"
</Location>

我使用我的 DSM ODBCconn 我正在使用 ODBC Driver 17 for SQL Server 并且我可以使用该 DSM 通过 python 中的 pyodbc 使用这些凭据进行连接,所以我认为我的设置正确.在数据库中,列 appName 将 return 用户被授权使用的应用程序的名称存储在 authTable 中,或者基本上是用户所属的组。因此,如果用户有一行 myApp,他们将被授权使用 myApp。我对文档 (https://httpd.apache.org/docs/trunk/mod/mod_authz_dbd.html) 的理解是我的查询应该如何定义组。

但是,当 运行 时,我在 httpd/logs/error_log 中得到一个 stack smashing error,看起来像:

*** stack smashing detected ***: /usr/sbin/httpd terminated
======= Backtrace: =========
...
...
Long long list of files
...
...
[Thu Jan 28 09:36:53.306151 2021] [core:notice] [pid 10621] AH00052: child pid 24810 exit signal Aborted (6)
[Thu Jan 28 09:36:53.306215 2021] [core:notice] [pid 10621] AH00052: child pid 28192 exit signal Aborted (6)
[Thu Jan 28 09:36:53.306238 2021] [core:notice] [pid 10621] AH00052: child pid 31928 exit signal Aborted (6)

关于我的设置可能出现的问题以这种方式阻止授权的任何帮助?

对于遇到类似问题的任何人,我终于能够自己解决问题。

我的 Apache 版本是 2.4.6,但最新的 RHEL 版本是 httpd-2.4.6-97。el7.centos 我相信。查看 apache 2.4 的更改日志 (https://www.apachelounge.com/Changelog-2.4.html) 大多数 mod_authz_dbd 更改都包含在 CentOS 版本中,除了集成在 Apache 2.4.17 中标题为

的更改
*) mod_authz_dbd: Avoid a crash when lacking correct DB access permissions. 
PR 57868. [Jose Kahan < jose w3.org>, Yann Ylavic]

有趣的是,尽管我的数据库访问权限是正确的,但这种类型的崩溃似乎与我观察到的崩溃类型类似。

我按照此处 (https://crosp.net/blog/administration/install-latest-apache-server-centos-7/) 的说明安装了 Apache 2.4.46。使用上面列出的完全相同的 .conf 文件获取此更新版本的 Apache 解决了我的问题。不幸的是,如果我走这条路,我的 Apache 现在没有 RHEL 的好处,但我假设 Apache 2.4.17 中的这个错误修复与我看到的错误有关。

无论如何,我认为值得一提的是我能够获得的解决方案,以防其他人遇到类似问题。