Apache授权使用require db -group从SQL Server数据库



我有一个应用程序在CentOS 7上的Apache 2.4.6上运行反向代理。我正在使用Shibboleth进行身份验证,目前正在通过使用AuthGroupFile /path/to/authfileRequire group authGroup的白名单进行授权。这目前适用于我的设置。我正试图改变这个过程,对存储在SQL Server数据库中的白名单进行授权,这被证明是困难的。

目前在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>

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

然而,当运行这个,我得到一个stack smashing error在我的httpd/logs/error_log看起来像:

*** 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]

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

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

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

最新更新