gssapi-auth-with-php到mariadb(windows)

bfnvny8b  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(442)

我目前正在一个干净的windows域环境中对数据库服务器进行单点登录。
由于mysql企业版和mssql服务器目前没有选择,所以只能使用带有gssapi插件的mariadb。
这就是我目前的情况:

服务器:

windows 7 x64 mydomain的成员
马里亚布10.2.14 x64
apache2 2.4.33 x64 vc11+mod\u authnz\u sspi+php 5.6.35+mod\u fcgid
mariadb odbc驱动程序x64
heidisql(与mariadb安装程序一起交付的sql客户端)
fcgid config如下所示(“a:”不是我机器上的软盘驱动器,而是我实际放置apache2的位置):

<IfModule !fcgid_module>
LoadModule fcgid_module modules/mod_fcgid.so

FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 200
FcgidMaxProcesses 500
FcgidMaxRequestLen 8131072

FcgidInitialEnv PHPRC "A:/php"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 200
FcgidWrapper "A:/php/php-cgi.exe" .php
</IfModule>

目录配置如下所示:

<Directory "${SRVROOT}/htdocs">
Options Indexes FollowSymLinks
AllowOverride None

AuthName "MYSERVER"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
SSPIOfferSSPI On

<RequireAll>
    <RequireAny>
        Require sspi-group mygroup
    </RequireAny>
    <RequireNone>
        Require user "ANONYMOUS LOGON"
    </RequireNone>
</RequireAll>

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

<FilesMatch \.php>
    AddHandler fcgid-script .php
</FilesMatch>

Options +ExecCGI
</Directory>

对php.ini没有什么特别之处,只是以php.ini-development为例(在php-zip包中提供),并启用了php\u-mysql、php\u-mysqli、php\u-mbstring和php\u-ldap扩展。
我当前的mariadbs my.ini如下所示:

[mysqld]
datadir=M:/data
port=3306

key_buffer_size = 384M
max_allowed_packet = 512M
table_open_cache = 512

read_buffer_size = 256M
read_rnd_buffer_size = 128M
sort_buffer_size = 512M
query_cache_size = 32M
join_buffer_size = 128M

default-storage-engine = INNODB
innodb-page-size = 65536
innodb_buffer_pool_size = 4G
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

character-set-server=utf8

thread_concurrency = 8
thread_cache_size = 8

[client]
port = 3306
plugin-dir = M:/lib/plugin

[mysqldump]
quick
max_allowed_packet = 512M

[mysql]
no-auto-rehash
safe-updates

客户:

mydomain的windows 10 x64成员
internet explorer 11
mysql workbench 6.0 ce(6.0.7.11215)
设置完所有内容后,我通过heidisql(或者任何sql客户机)用根帐户连接到mariadb服务器,并创建实际用户,如下所述https://mariadb.com/kb/en/library/authentication-plugin-gssapi/ :

CREATE USER myuser IDENTIFIED VIA gssapi AS 'myuser@MYDOMAIN';

现在,在与heidisql连接时,或者在为mysql workbench提供auth\u gssapi\u client.dll(并且进程以myuser身份运行)之后,我连接到mariadb服务器没有问题。
在尝试连接php之前,我先看了phpinfo();在这里,一切似乎都和预期的一样,使用$\u服务器vars remote\u user、php\u auth\u user和php\u auth\u pw。以下是my index.php:

<?php
    //phpinfo(); exit;
    $m = mysql_connect("localhost", $_SERVER["PHP_AUTH_USER"]);
    $mi = mysqli_connect("localhost", $_SERVER["PHP_AUTH_USER"]);
    $c = odbc_connect("MariaDB", $_SERVER["PHP_AUTH_USER"], "");
?>

正如您可能在某个时候看到的,我用mariadbodbc连接器设置了一个systemdsn,并将其命名为mariadbwich,它指向mariadbs plugin dir。
有了这些,我至少可以试着让它工作起来,在那之后,我会担心这些:

Warning: mysql_connect(): The server requested authentication method unknown to the client [auth_gssapi_client] in A:\htdocs\index.php on line 3
Warning: mysql_connect(): The server requested authentication method unknown to the client in A:\htdocs\index.php on line 3
Warning: mysqli_connect(): The server requested authentication method unknown to the client [auth_gssapi_client] in A:\htdocs\index.php on line 4
Warning: mysqli_connect(): (HY000/2054): The server requested authentication method unknown to the client in A:\htdocs\index.php on line 4

对于如何将mysql或mysqli的php扩展指向mariadb的auth\u gssapi\u client.dll插件,我找不到任何解决方案。如果有人能告诉我,我也会很感激的。
但真正的问题,我也会(很可能)碰到mysql和mysqli,是odbc连接的结果…:

Warning: odbc_connect(): SQL error: [ma-3.0.3]GSSAPI name mismatch, requested 'myuser@MYDOMAIN', actual name 'myserver$@MYDOMAIN', SQL state 28000 in SQLConnect in A:\htdocs\index.php on line 5

进程本身是作为本地系统运行的ofc,遗憾的是gssapi只对运行进程的用户感兴趣,而对经过身份验证的用户不感兴趣。
我在互联网上搜索了一个星期,尝试了一些东西来让它发挥作用,尽管仍然没有任何有效的结果(或者关于下一步在这方面尝试什么的任何想法)。
因此,如果有人有一个如何让它工作的想法,那将是伟大的。
格里茨·塞斯基

xam8gpfp

xam8gpfp1#

警告:odbc\u connect():sql错误:[ma-3.0.3]gssapi名称不匹配,请求'myuser@mydomain'实际名称'myserver$@mydomain,sqlconnect中的sql状态28000,位于a:\htdocs\index.php的第5行
这意味着您的应用程序(apache?)与计算机帐户连接,可能以networkservice用户身份运行,或者类似的方式运行。如果您可以在域用户“myuser”凭据下运行它,那么它将连接。
或者,您可以创建与机器帐户相对应的mariadb用户帐户,并将其用于连接。

相关问题