WordPress反向代理身份验证与额外的http标头



我想使用反向代理服务器提供的http X-User标头登录WordPress仪表板。

我打算使用WordPress作为CMS,我们的组织成员可以自由地撰写文章。为了最大限度地提高用户体验,我希望允许用户使用我们的组织帐户登录到仪表板。我们的服务器构建在一个nginx反向代理服务器容器后面的Docker容器上,该容器通过向认证服务器查询来检查请求,并通过添加X-User标头来通知应用服务器。

这是我的nginx.conf

location /_login {
internal;
proxy_pass http://auth-server/path/to/api;
}
location @unauthorized {
internal;
return 302 http://auth-client.example.com/path/to/login-form
}
location / {
auth_request /_login;
auth_request_set $user $upstream_http_x_user; 
proxy_set_header X-User $user;
proxy_pass http://wordpress/;
error_page 403 @unauthorized;
}

有没有合适的插件来做到这一点?或者我必须创建一个新插件?

最后我找到了解决方案。

创建wp-content/plugins/some-plugin.php

<?php
/*
Plugin Name: Some Plugin
*/
add_action('login_init', function() {
if ($_SERVER['HTTP_X_USER']) {
$user = get_user_by('login', $_SERVER['HTTP_X_USER']);
if ($user) {
wp_clear_auth_cookie();
wp_set_auth_cookie($user->ID);
do_action('wp_login', $user->login, $user);
wp_safe_redirect(isset($_GET['redirect_to']) ? $_GET['redirect_to'] : admin_url());
exit;
}
}
}, 1);

最新更新