1

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

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

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

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

我已经尝试为每个 php 手册页设置基本的身份验证标头,但它会弹出一个登录框,这不是我需要的,因为这些是相互通信的 Web 服务,而不是人:

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

}
4

3 回答 3

2

感谢所有提供的解决方案。这是为我解决了这个问题的方法:

这是一个服务器配置问题。我需要在我的 PHP中编译Apache 扩展。一旦我这样做了,$_SERVER 数组就会包含 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 值。在此之前,$_SERVER 数组中缺少这些值

于 2012-11-15T13:01:16.643 回答
0

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

于 2012-11-14T20:11:26.893 回答
-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

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

AuthType Basic
AuthName "Password Required"
于 2012-11-14T20:18:06.190 回答