mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
129 lines
5.1 KiB
XML
129 lines
5.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: cd4180557a185469a64a7eb26f7be98d0a5f1ebb Maintainer: leonardolara Status: ready --><!-- CREDITS: rfoliveira,ae,leonardolara -->
|
|
<chapter xml:id="features.http-auth" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Autenticação HTTP com PHP</title>
|
|
|
|
<simpara>
|
|
Pode-se utilizar a função
|
|
<function>header</function> para enviar uma mensagem de <literal>"Authentication Required"</literal>
|
|
para o navegador cliente, causando o aparecimento de uma janela para a entrada de Nome de Usuário/Senha.
|
|
Uma vez que o usuário preencha um nome de usuário e uma senha,
|
|
a URL contendo o script PHP será chamada mais uma vez com as
|
|
<link linkend="reserved.variables">variáveis predefinidas</link>
|
|
<varname>PHP_AUTH_USER</varname>, <varname>PHP_AUTH_PW</varname>,
|
|
e <varname>AUTH_TYPE</varname> para determinar o nome de usuário, senha e
|
|
tipo da autenticação, respectivamente. Estas variáveis predefinidas são encontradas
|
|
no array <varname>$_SERVER</varname>. <emphasis>Somente</emphasis>
|
|
o método de autenticação "Basic" é suportado. Consulte a função
|
|
<function>header</function> para mais informações.
|
|
</simpara>
|
|
|
|
<para>
|
|
Um exemplo de fragmento de script que forçaria a autenticação
|
|
do cliente em uma página:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Exemplo de Autenticação HTTP "Basic"</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
|
header('HTTP/1.1 401 Unauthorized');
|
|
header('WWW-Authenticate: Basic realm="My Realm"');
|
|
echo 'Texto enviado caso o usuário clique no botão Cancelar';
|
|
exit;
|
|
} else {
|
|
echo "<p>Olá, {$_SERVER['PHP_AUTH_USER']}.</p>";
|
|
echo "<p>Você digitou {$_SERVER['PHP_AUTH_PW']} como sua senha.</p>";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<note>
|
|
<title>Compatibilidade</title>
|
|
<para>
|
|
Por favor, seja cauteloso ao codificar as linhas do cabeçalho HTTP. Para garantir máxima
|
|
compatibilidade com todos os clientes, a palavra-chave "Basic" deve ser escrita com um
|
|
"B" maiúsculo, a string realm deve ser envolvida por aspas duplas (nunca por aspas simples),
|
|
e apenas um espaço deve preceder o código <emphasis>401</emphasis> na linha do cabeçalho
|
|
<emphasis>HTTP/1.1 401</emphasis>. Parâmetros de autenticação precisam ser separados por
|
|
vírgula.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Ao invés de simplesmente exibir <varname>PHP_AUTH_USER</varname>
|
|
e <varname>PHP_AUTH_PW</varname>, como no exemplo acima,
|
|
talvez queira verificar a validade do nome de usuário e senha.
|
|
Talvez enviando uma consulta a um banco de dados, ou procurando
|
|
o usuário em um arquivo dbm.
|
|
</para>
|
|
|
|
<note>
|
|
<title>Configuração do Apache</title>
|
|
<para>
|
|
O PHP usa uma diretiva chamada <literal>AuthType</literal>
|
|
para determinar se a autenticação externa está em efeito.
|
|
</para>
|
|
</note>
|
|
|
|
<simpara>
|
|
Perceba, entretanto, que a diretiva citada acima não previne que alguém que
|
|
controle uma URL não autenticada roube senhas de
|
|
URLs autenticadas no mesmo servidor.
|
|
</simpara>
|
|
|
|
<note>
|
|
<title>Comportamento do navegador</title>
|
|
<simpara>
|
|
A autenticação básica HTTP é realmente básica e não foi projetada para suportar
|
|
logouts. Como o HTTP é um protocolo sem estado, a maioria dos navegadores armazena em cache as
|
|
credenciais fornecidas assim que um código de status <literal>2xx</literal> é detectado,
|
|
e as envia em todas as requisições, até que o navegador seja fechado. Não há
|
|
uma maneira definida para um servidor solicitar uma nova solicitação de credenciais.
|
|
|
|
Ao longo dos anos, várias soluções alternativas para isso se espalharam como conselhos na internet,
|
|
mas todas dependem de como diferentes navegadores optaram por lidar com casos extremos indefinidos
|
|
(ou mesmo violações do padrão HTTP). É melhor evitar essas
|
|
soluções alternativas e não usar a autenticação básica para nada sério.
|
|
</simpara>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Configuração do IIS</title>
|
|
<simpara>
|
|
Para que a autenticação HTTP funcione no servidor IIS com a versão CGI do
|
|
PHP, a diretiva php.ini <link linkend="ini.cgi.rfc2616-headers">cgi.rfc2616_headers</link>
|
|
deve ser definida como <literal>0</literal> (o valor padrão) e a configuração do IIS
|
|
em "<literal>Directory Security</literal>" (ou "Segurança do Diretório" / "Autenticação") deve ser editada.
|
|
Clique em "<literal>Edit</literal>" (ou "Editar") e marque apenas "<literal>Anonymous Access</literal>" (ou "Acesso Anônimo"),
|
|
deixando todos os outros campos desmarcados.
|
|
</simpara>
|
|
</note>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|