web-dev-qa-db-ja.com

Active DirectoryとWindows認証を使用した自動ログイン

Active Directoryユーザーに基づいて新しいWordPressユーザーを作成するために、2つの異なるLDAPプラグイン(CoSign SSO、Simple LDAP Logon)を設定して使用することができましたが、それでも手動でログインして投稿する必要があります。ユーザーの資格情報をブラウザから取得して、WordPressサイトにアクセスするたびに自動的にログインする方法はありますか? IISをWindows認証で設定しました。URLは信頼でき、認証情報を送信できるものとしてブラウザに表示されます。

別のプラグインが必要ですか、それともWordPressで1ページか2ページ編集する必要がありますか?

ありがとう

3
Curtis

IIS PHPを指定したWindows認証を使用している場合は、$_SERVER["LOGON_USER"];からログオンしている現在の認証ユーザーを読み取ることができます。

これが設定されていて、ユーザーがHTTP認証プロンプトを受け取っていない場合は、ユーザー資格情報が正しいと見なすことができます。そのため、いくつかのWPコーディングを使えば、その$_SERVER['LOGON_USER']を読むことができ、ログインしていなければWPそれらをそのユーザー名で自動ログインできます。

テーマ関数ファイルまたは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');

WPテーブルで一致する正しいユーザー名を取得するには、$user_login変数にさらに微調整を加える必要があるかもしれません。

1
Brady

あなたはこのような何かでログアウト問題を処理することができます

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;
}

サインイン時にこのクッキーを破壊するもう一つの機能

add_action( 'wp_login', 'my_logout_cookie_destroy' );
function my_logout_cookie_destroy() {
    setcookie( 'logout', 'false' );
}

この解決策は未検証です。あなたがすでにページ出力を持っているならば、あなたはクッキーを設定することで問題にぶつかるかもしれません、しかし私はそれが比較的簡単に克服することができると思います。

1
mor7ifer