ユーザーがWindows認証を使用して自分のサイトにログインした場合、ユーザーをログアウトして、再度認証する必要があるようにするにはどうすればよいですか?(これはIISの場合です)
たとえば、ユーザーは次のようにログインします。
次に、$_SERVER
変数には次のものが含まれます。
[REMOTE_ADDR] => 172.34.567.891
[REMOTE_HOST] => 172.34.567.891
[REMOTE_PORT] => 44601
[REMOTE_USER] => DOMAIN\username
また、ユーザーは、コンピューターを再起動するか、別のブラウザーを使用しない限り、Windows認証を使用してユーザー名またはパスワードの入力を再度求められることはありません。
ユーザーをPHPで再度認証するように強制するにはどうすればよいですか?
アップデート:
私はこれを行う方法を見つけましたが、それはクロームでのみ機能します(ログインが正しい場合でも、他のすべてのブラウザは401を無許可でスローします):
私のコード:
logout.php
//clear session
//then:
$user = isset($_SESSION['userName']);
$userNotSet = (!$user || (is_array($user) && count($user) == 0));
if(!isset($_SESSION['401']) && $userNotSet) {
$_SESSION['401'] = true;
$realm = 'mysite';
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Digest realm="'.$realm.
'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
exit;
}
elseif($userNotSet) {
header('HTTP/1.1 401 Unauthorized');
list($domain, $user) = explode("\\", $_SERVER['REMOTE_USER']);
$_SESSION['userName'] = $user;
$_SESSION['LoggedIn'] = true;
}
else {
header('Location: '.WEBROOT.INDEX);
}
exit;
Chrome以外のブラウザでこれが機能しないのはなぜですか?クロスブラウザソリューションはありますか?