基本身份验证URL处理

时间:2012-11-14 20:05:41

标签: php basic-authentication

我们有一个新的b2b供应商想要通过URL使用基本身份验证。

他们希望像这样进行身份验证:

  //URL coming into our server
  http://usernametext:passwordtext@our.company.com/listener.php

如何通过listener.php脚本从URL获取用户名和密码?

我已尝试根据php手册页设置基本的auth标头,但它会弹出一个登录框,这不是我需要的,因为这些是互相交流的网络服务,而不是人:

if (!isset($_SERVER['PHP_AUTH_USER'])) {
     header('WWW-Authenticate: Basic realm="My Realm"');
     header('HTTP/1.0 401 Unauthorized');
     echo '<response><error>No username and password found</error></response>';
     exit;
 } else {

   //process request if username & password are legit

}

3 个答案:

答案 0 :(得分:2)

感谢所有提供的解决方案。以下是为我解决这个问题的原因:

这是服务器配置问题。我需要在PHP中编译Apache extension。一旦我这样做,$ _SERVER数组包含$ _SERVER ['PHP_AUTH_USER']和$ _SERVER ['PHP_AUTH_PW']值。在此之前,$ _SERVER数组

中缺少这些值

答案 1 :(得分:0)

为什么不通过好旧的$ _GET发送信息?就像是 http://our.company.com/listener.php?usr='me'&pswd='secret'

答案 2 :(得分:-1)

可能会有所帮助:

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}

您可以查看更详细的信息:http-auth

更新:如果您不需要弹出框(确认用户+在非必需的auth站点上传递),只需在目录上添加.htaccess即可。

AuthType Basic
AuthName "Password Required"