File: http-auth.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (171 lines) | stat: -rw-r--r-- 6,200 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.21 Maintainer: goba Status: ready -->

 <chapter id="features.http-auth">
  <title>HTTP hitelests PHP-vel</title>

  <simpara>
   A HTTP hitelestsi (authentication) funkcik csak akkor elrhetek
   PHP-ben, ha az Apache modulknt fut, br rgebben a CGI md hasznlat
   sorn is mkdtt ez a funkci, azonban ez a lehetsg mr megsznt.
   Az Apache modulknt fut PHP esetben a <function>header</function> fggvnyt
   kell hasznlni arra, hogy egy  "Authentication Required"
   zenetet kldjn a kliens bngsznek, aminek hatsra az egy Username/Password 
   bemeneti ablakot nyit meg a felhasznl szmra. Ha a ltogat kitlttte
   a username s password mezket, az URL, ami a PHP szkriptre mutat, ismt
   meghvsra kerl, s rendelkezsre llnak a $PHP_AUTH_USER, $PHP_AUTH_PW
   s a $PHP_AUTH_TYPE vltozk, amik a felhasznli nv, jelsz s 
   azonostsi tpus rtkeket tartalmazzk rtelemszeren. Jelen pillanatban
   csupn a "Basic" azonostsi tpus tmogatott. Lsd mg a
   <function>header</function> fggnyvt.</simpara>
   
  <para>
   Egy egyszer plda PHP szkript, ami kliens azonostst vlt ki:

   <example>
    <title>HTTP azonostsi plda</title>
    <programlisting role="php">
<![CDATA[
<?php
  if(!isset($PHP_AUTH_USER)) {
    header("WWW-Authenticate: Basic realm=\"Azonosts indoka\"");
    header("HTTP/1.0 401 Unauthorized");
    echo "Ez jelenik meg, ha a Cancel gombot nyomja a felhasznl\n";
    exit;
  } else {
    echo "<p>Hell $PHP_AUTH_USER.</p>";
    echo "<p>A megadott jelszavad: $PHP_AUTH_PW.</p>";
  }
?>
]]>
    </programlisting>
   </example>
  </para>

  <note>
   <title>Megjegyzs</title>
   <para>
    Vigyzz a HTTP fejlcek rsakor! A maximlis kompatibilits elrshez
    a "Basic" kulcsszt nagy B betvel kezdd, a "realm" rszt mindenkppen tedd
    idzjelbe (s nem aposztrfok kz)!  Vgl pontosan egy szkzt hagyj
    ki a "401" eltt a "HTTP/1.0 401" fejlc sorban.
   </para>
  </note>
 
  <para>
   Egy vals esetben persze nem a $PHP_AUTH_USER s
   $PHP_AUTH_PW kirsa az elrni kvnt cl, gy
   ltalban a usernv s jelsz ellenrzse kvetkezik.
   Termszetesen lehetsg van ezt egy adatbzis lekrdezssel megoldani,
   vagy egy dbm fjlban utnanzni a szksges adatoknak.
  </para>

  <para>
   Figyelj a hibs Internet Explorer bngszkre, amik nem fogadjk
   el tetszleges sorrendben a HTTP fejlceket. A tesztek azt
   mutatjk, hogy a <emphasis>WWW-Authenticate</emphasis> elkldse
   a <literal>HTTP/1.0 401</literal> eltt megoldja a problmt.
  </para>

  <simpara>
   Mivel a hagyomnyos HTTP azonosts sorn a jelsz rejtett
   az elrt szkript eltt, a PHP nem lltja be a PHP_AUTH vltozkat
   ha az adott file-ra a hagyomnyos azonosts is engedlyezett,
   s gy nem derthet ki a user jelszava. Ebben az esetben
   a $REMOTE_USER vltoz tartalmazza a mr azonostott felhasznl
   nevt.
  </simpara>

  <note>
   <title>Belltsi megjegyzs</title>
   <para>
    A PHP az <literal>AuthType</literal> direktva meglte alapjn
    dnti el, hogy rajta kvlll azonosts trtnik-e.
    Figyelj ennek a direktvnak az elkerlsre abban a krnyezetben,
    ahol a PHP-t szeretnd hasznlni azonostsok kezelsre (klnben
    minden azonostsi prblkozs sikertelen lesz).
   </para>
  </note>

  <simpara>
   Vedd szre, hogy ez nem kszbli ki azt a problmt,
   hogy ms nem azonosts-kteles URL cmeken lv
   szkriptek ugyanazon a szerveren megszerezzk a jelszavakat
   az azonostott URL-ekrl.
  </simpara>
  <simpara>
   A Netscape Navigator s Internet Explorer bngszk trlni fogjk
   a bngsz adott oldalhoz tartoz azonostsi trt (authentication cache),
   amennyiben egy 401-es szerver zenetet kapnak. Ez gyakorlatilag
   kilpteti a user-t, ami azt jelenti, hogy legkzelebb ismt meg kell
   adnia a nevt s jelszavt. Idnknt ezt arra hasznljk, hogy
   lejrati idt rendelve a belpsekhez egy id utn megszntessk
   azokat, vagy egy kilps gombot biztostsanak.</simpara>
  <simpara></simpara>
   <example>
     <title>HTTP azonostsi plda, ami j nevet s jelszt kr</title>
     <programlisting role="php">
<![CDATA[
<?php
  function azonositas() {
   header( "WWW-Authenticate: Basic realm=\"Azonostsi Rendszer Teszt\"");
   header( "HTTP/1.0 401 Unauthorized");
   echo "rvnyes nevet s jelszt kell megadnod, hogy elrd ezt a szolgltatst!\n";
   exit;
  }
 
  if(!isset($PHP_AUTH_USER) || ($JartMarItt == 1 && !strcmp($RegiUser, $PHP_AUTH_USER))) {
   azonositas();
  } 
  else {
   echo "<p>Hell: $PHP_AUTH_USER<br>";
   echo "Rgebben: $RegiUser";
   echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
   echo "<input type=\"hidden\" name=\"JartMarItt\" value=\"1\">\n";
   echo "<input type=\"hidden\" name=\"RegiUser\" value=\"$PHP_AUTH_USER\">\n";
   echo "<input type=\"submit\" value=\"jraazonosts\">\n";
   echo "</form></p>\n";
  }
?>
]]>
   </programlisting>
  </example>
  <simpara>
   A HTTP Basic azonostsi standard nem kveteli meg ezt a
   viselkedst a bngszk rszrl, teht ne pts r!
   Lynx-el vgzett tesztek azt mutattk, hogy a Lynx nem
   trli az azonostsi bizonytvnyokat a 401-es szerver
   vlasz hatsra, teht egy back s forward lpssel
   ismt megnylik az oldal, feltve, hogy az azonostsi
   felttelek nem vltoztak. Ellenben a felhasznl megnyomhatja
   a '_' billentyt, hogy trlje az azonostsi informcikat.
  </simpara>

  <simpara>
   Szintn fontos megjegyezni, hogy ez a mdszer nem vezet
   eredmnyre, ha Microsoft IIS szervert hasznlsz CGI
   md PHP-val, az IIS korltozsai miatt.
  </simpara>

 </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:"../../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
-->