簡體   English   中英

Rest API 如何通過基本身份驗證進行身份驗證?

[英]Rest API how to authentication via Basic Auth?

我想創建具有基本授權的 RESTful API。

我怎樣才能在 php 中做到這一點? 我怎樣才能通過標題在 php 端低於字符串和檢查身份驗證?

基本 Zajkljask34jlksdlfkjds=

如何使用基本身份驗證在 PHP 中讀取用戶名和密碼 以下代碼只是您如何閱讀基本身份驗證的示例。 詳細信息並進行授權。

if (isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER']==$valid_username &&  $_SERVER['PHP_AUTH_PW']==$valid_password) {
  // the user is authenticated and handle the rest api call here
  echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";

} else {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;

}
?>

授權后,您可以生成會話密鑰並將其發送給客戶端,客戶端可以使用該密鑰調用其余 api 方法。使用沒有 SSL 的基本身份驗證是不安全的。 如果您可以使用 HTTPS,那就更好了。 請參閱以下鏈接以配置基本身份驗證。

如果您使用的是 asp.net web api

http://www.asp.net/web-api/overview/security/basic-authentication

如果您使用的是 php,我建議您使用 rest api 框架

http://www.appelsiini.net/projects/slim-basic-auth

首先你需要創建 .htaccess 文件,如果它不存在的話。 現在,您需要添加以下幾行:

RewriteEngine On
RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

接下來,在要解析信息的 PHP 文件中添加以下代碼行:

if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {

    if (strpos(strtolower($_SERVER['REDIRECT_HTTP_AUTHORIZATION']),'basic')===0)
        list($username,$password) = explode(':',base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));

}

在這里您可以看到用戶名和密碼存儲在 $username 和 $password 變量中。 現在,您可以對這些值做任何您想做的事情,例如檢查數據庫——您可以通過添加額外的邏輯來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM