J'ai été en mesure de configurer et d'utiliser différents plug-ins LDAP (CoSign SSO, Simple LDAP Logon) pour créer de nouveaux utilisateurs WordPress basés sur les utilisateurs Active Directory, mais il leur faut néanmoins se connecter manuellement pour publier des messages. Existe-t-il un moyen de le faire extraire les informations d'identification de l'utilisateur du navigateur et de les connecter automatiquement chaque fois qu'il visite le site WordPress? J'ai IIS configuré avec l'authentification Windows et l'URL est répertoriée dans le navigateur comme étant une adresse à laquelle il peut faire confiance et à laquelle envoyer des informations d'identification.
Ai-je besoin d'un autre plugin ou cela nécessiterait-il l'édition d'une page ou deux dans WordPress?
merci
Si vous utilisez l'authentification Windows avec IIS, _ PHP peut lire l'utilisateur authentifié actuel ayant ouvert une session à partir de $_SERVER["LOGON_USER"];
Si cette option est définie et que l'utilisateur ne reçoit pas d'invite d'authentification HTTP, vous pouvez supposer que les informations d'identification de l'utilisateur sont correctes. Donc, avec un certain codage WP, vous pouvez lire ce $_SERVER['LOGON_USER']
et s’ils ne sont pas connectés à WP, connectez-vous automatiquement avec ce nom d’utilisateur.
place dans le fichier de fonctions de thème ou dans un fichier de plug-ins MU.
function auto_login() {
if (!is_user_logged_in() && isset($_SERVER['LOGON_USER'])) {
$user_login = $_SERVER['LOGON_USER'];
$user = get_userdatabylogin($user_login);
$user_id = $user->ID;
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action('wp_login', $user_login);
}
}
add_action('init', 'auto_login');
Vous devrez peut-être peaufiner davantage la variable $user_login
pour obtenir le nom d'utilisateur correct correspondant dans la table WP.
Vous pouvez gérer le problème de déconnexion avec quelque chose comme ça
function auto_login() {
if ( !is_user_logged_in() && isset($_SERVER['LOGON_USER']) && my_logout_cookie_check() === false ) {
$user_login = $_SERVER['LOGON_USER'];
$user = get_userdatabylogin( $user_login );
$user_id = $user->ID;
wp_set_current_user( $user_id, $user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user_login );
}
}
add_action( 'init', 'auto_login' );
add_action( 'wp_logout', 'my_logout_cookie' );
function my_logout_cookie() {
setcookie( 'logout', 'true' );
}
function my_logout_cookie_check() {
if( $_COOKIE['logout'] === 'true' )
return true;
else
return false;
}
Et une autre fonction pour détruire ce cookie lors de la connexion
add_action( 'wp_login', 'my_logout_cookie_destroy' );
function my_logout_cookie_destroy() {
setcookie( 'logout', 'false' );
}
Cette solution n'a pas été testée. Vous pouvez rencontrer des problèmes avec la configuration du cookie si vous avez déjà une sortie de page, mais je pense que cela pourrait être surmonté relativement facilement.