![](/bink.gif) |
|
| ![](/bink.gif) |
|
![](icon/private_name/1.gif) |
12³â Àü |
PHP¸¦ ÀÌ¿ëÇÑ HTTP ÀÎÁõÀº ¾ÆÆÄÄ¡ ¸ðµâ·Î ½ÇÇàÇÒ¶§¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, CGI ¹öÀü¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¾ÆÆÄÄ¡ ¸ðµâÀÇ PHP ½ºÅ©¸³Æ®¿¡¼, header() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© "ÀÎÁõ ¿ä±¸" ¸Þ¼¼Áö¸¦ Ŭ¶óÀ̾ðÆ® ºê¶ó¿ìÀú¿¡ Àü¼ÛÇÏ¿© À¯Àú³×ÀÓ/Æнº¿öµå ÀÔ·ÂâÀ» ¶ç¿ï ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ À¯Àú³×ÀÓ°ú Æнº¿öµå¸¦ ÀÔ·ÂÇϸé PHP ½ºÅ©¸³Æ®ÀÇ URLÀÌ ´Ù½Ã È£ÃâµÇ°í, ¿¹¾à Á¤ÀÇ º¯¼ö PHP_AUTH_USER, PHP_AUTH_PW, AUTH_TYPE¿¡ À¯Àú³×ÀÓ, Æнº¿öµå, ÀÎÁõ Çü½ÄÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ ¿¹¾à Á¤ÀÇ º¯¼öµéÀº $_SERVER¿Í $HTTP_SERVER_VARS ¹è¿¿¡¼ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. "Basic" ÀÎÁõ¸¸ÀÌ Áö¿øµË´Ï´Ù. Ãß°¡ Á¤º¸¸¦ À§Çؼ´Â header() ÇÔ¼ö¸¦ Âü°íÇϽʽÿÀ.
PHP ¹öÀü ÁÖÀÇ: $_SERVER µîÀÇ ÀÚµ¿ Àü¿ª º¯¼ö´Â PHP ¹öÀü 4.1.0ºÎÅÍ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. $HTTP_SERVER_VARS´Â PHP 3ºÎÅÍ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº ÆäÀÌÁö¿¡ ´ëÇØ Å¬¶óÀ̾ðÆ® ÀÎÁõÀ» °Á¦ÇÏ´Â ¿¹Á¦ ½ºÅ©¸³Æ®ÀÔ´Ï´Ù:
¿¹ 16-1. HTTP ÀÎÁõ ¿¹Á¦
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo '»ç¿ëÀÚ°¡ Ãë¼Ò ¹öÆ°À» ´·¶À» ¶§ Àü¼ÛµÇ´Â ÅؽºÆ®';
exit;
} else {
echo "<p>¾È³çÇϼ¼¿ä, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>{$_SERVER['PHP_AUTH_PW']}¸¦ Æнº¿öµå·Î Á¢¼ÓÇß½À´Ï´Ù.</p>";
}
?>
ȣȯ¼º ÁÖÀÇ: HTTP Çì´õ¿À» ÄÚµùÇÒ¶§´Â ÁÖÀǸ¦ ±â¿ïÀ̽ʽÿÀ. ¸ðµç Ŭ¶óÀ̾ðÆ®¿¡ ´ëÇØ ÃÖ´ëÀÇ È£È¯¼ºÀ» º¸Àå¹Þ±â À§Çؼ´Â, Å°¿öµå "Basic"Àº ´ë¹®ÀÚ "B"·Î ¾²¿©Á®¾ßÇÏ°í, ·¼¸§ ¸Þ¼¼Áö´Â ÀÌÁß ÀÎ¿ë ºÎÈ£(")·Î °¨½ÎÁ®¾ßÇϸç, HTTP/1.0 401 Çì´õ¿¿¡¼ 401 ÄÚµå´Â Á¤È®È÷ ÇϳªÀÇ ½ºÆäÀ̽º¸¦ °¡Á®¾ßÇÕ´Ï´Ù.
À§ ¿¹Á¦¿Í °°ÀÌ ´Ü¼øÈ÷ PHP_AUTH_USER¿Í PHP_AUTH_PW¸¦ Ãâ·ÂÇÏ´Â ´ë½Å, À¯Àú³×ÀÓ°ú Æнº¿öµå¸¦ È®ÀÎÇؼ ÀÎÁõÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º¿¡ ¿ä±¸¸¦ Çϰųª, dbm ÆÄÀÏ¿¡¼ À¯Àú¸¦ ã¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.
ÀÎÅÍ³Ý ÀͽºÇ÷η¯ ºê¶ó¿ìÀúÀÇ ¹ö±×¿¡ ÁÖÀÇÇϽʽÿÀ. Çì´õÀÇ ¼ø¼¿¡ ¸Å¿ì ±î´Ù·Ó½À´Ï´Ù. WWW-Authenticate Çì´õ¸¦ HTTP/1.0 401 Çì´õ Àü¿¡ Àü¼ÛÇÏ´Â °ÍÀÌ ÇöÀç »ç¿ë °¡´ÉÇÑ ¹æ¹ýÀÔ´Ï´Ù.
PHP 4.3.0ºÎÅÍ, ÀüÅëÀûÀÎ ¿ÜºÎ ¸ÞÄ«´ÏÁòÀ» ÅëÇؼ ÀÎÁõµÈ ÆäÀÌÁöÀÇ Æнº¿öµå¸¦ ´©ÃâÇÏ´Â ½ºÅ©¸³Æ®ÀÇ ÀÛ¼ºÀ» ¹æÁöÇϱâ À§Çؼ, °¢°¢ÀÇ ÆäÀÌÁö¿¡ ´ëÇÑ ¿ÜºÎ ÀÎÁõ°ú ¾ÈÀü ¸ðµå°¡ È°¼ºÈµÇ¾úÀ»¶§, PHP_AUTH º¯¼ö¸¦ ¼³Á¤ÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å, ¿ÜºÎ ÀÎÁõ À¯Àú¸¦ È®ÀÎÇϱâ À§Çؼ REMOTE_USER¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, $_SERVER['REMOTE_USER']¸¦ »ç¿ëÇϽʽÿÀ.
ȯ°æ¼³Á¤ ÁÖÀÇ: PHP´Â ¿ÜºÎ ÀÎÁõÀ» °ËÁõÇϱâ À§Çؼ AuthType Áö½ÃÀÚÀÇ Á¸À縦 »ç¿ëÇÕ´Ï´Ù.
±×·¯³ª, ÀÌ ÀÛµ¿Àº ºñÀÎÁõ URLÀ» Á¶ÀÛÇؼ °°Àº ¼¹öÀÇ ÀÎÁõ URLÀÇ Æнº¿öµå¸¦ ÈÉÄ¡´Â °ÍÀ» ¹æÁöÇÏÁö´Â ¸øÇÔ¿¡ ÁÖÀÇÇϽʽÿÀ.
³Ý½ºÄÉÀÌÇÁ ³×ºñ°ÔÀÌÅÍ¿Í ÀÎÅÍ³Ý ÀͽºÇ÷η¯´Â ¼¹ö ÀÀ´ä 401À» ¹Þ¾ÒÀ» ¶§, ·ÎÄà ºê¶ó¿ìÀúâÀÇ ÀÎÁõ ij½¬¸¦ Ŭ¸®¾îÇÕ´Ï´Ù. ÀÌ°ÍÀº °Á¦·Î À¯Àú³×ÀÓ°ú Æнº¿öµå¸¦ ÀçÀÔ·ÂÇÏ°Ô ÇÔÀ¸·Î½á, »ç¿ëÀÚ¸¦ '·Î±× ¾Æ¿ô'ÇÏ´Â È¿°ú¸¦ °¡Áý´Ï´Ù. ¸î¸î »ç¶÷µéÀº ÀÌ°ÍÀ» "½Ã°£ Á¦ÇÑ" ·Î±×ÀÎÀ̳ª, "·Î±× ¾Æ¿ô" ¹öÆ°À» Á¦°øÀ» ÅëÇØ »ç¿ëÇÕ´Ï´Ù.
¿¹ 16-2. »õ À̸§/Æнº¿öµå¸¦ °Á¦ÇÏ´Â HTTP ÀÎÁõ ¿¹Á¦
<?php
function authenticate() {
header('WWW-Authenticate: Basic realm="Å×½ºÆ® ÀÎÁõ ½Ã½ºÅÛ"');
header('HTTP/1.0 401 Unauthorized');
echo "ÀÌ ÀÚ¿ø¿¡ Á¢±ÙÇϱâ À§Çؼ´Â À¯È¿ÇÑ ·Î±×ÀÎ ID¿Í Æнº¿öµå¸¦ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.\n";
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
authenticate();
}
else {
echo "<p>¾î¼¿À½Ê½Ã¿À: {$_SERVER['PHP_AUTH_USER']}<br>";
echo "ÀÌÀü: {$_REQUEST['OldAuth']}";
echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
echo "<input type='hidden' name='SeenBefore' value='1'>\n";
echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'>\n";
echo "<input type='submit' value='ÀçÀÎÁõ'>\n";
echo "</form></p>\n";
}
?>
ÀÌ ÇൿÀº HTTP Basic ÀÎÁõ Ç¥ÁØ¿¡ ÇÊ¿äÇÏÁö ¾Ê±â ¶§¹®¿¡, ÀÌ°Í¿¡ ÀÇÁ¸Çؼ´Â ¾ÈµË´Ï´Ù. Lynx·Î Å×½ºÆ® ÇßÀ»¶§, Lynx´Â 401 ¼¹ö ÀÀ´ä¿¡ ÀÎÁõ Á¤º¸¸¦ Ŭ¸®¾îÇÏÁö ¾Ê±â¿¡, ÀÌÀüÀÇ ÀÎÁõ Á¤º¸¸¦ ±×´ë·Î ÀÌ¿ëÇؼ ÀÚ¿øÀ» ¾òÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù. ´ë½Å, »ç¿ëÀÚ°¡ '_' Å°¸¦ ´©¸§À¸·Î½á ÀÎÁõ Á¤º¸¸¦ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PHP 4.3.3±îÁö, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ IIS ¼¹ö¸¦ CGI ¹öÀüÀÇ PHP·Î »ç¿ëÇÒ ¶§, IISÀÇ Á¦¾àÀ¸·Î ÀÎÇÏ¿© HTTP ÀÎÁõÀº ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. PHP 4.3.3 À̻󿡼 ÀÛµ¿ÇÏ°Ô ÇÏ·Á¸é, IIS ȯ°æ ¼³Á¤ "µð·ºÅ丮 º¸¾È"À» ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. "¼öÁ¤"À» Ŭ¸¯ÇÏ°í, "À͸í Á¢±Ù"¸¸À» üũÇÏ°í, ´Ù¸¥ ¸ðµç Çʵå´Â üũ¸¦ ÇØÁ¦ÇϽʽÿÀ.
IIS ¸ðµâ(ISAPI)¸¦ »ç¿ëÇÒ ¶§ ´Ù¸¥ Á¦¾àÀº, PHP_AUTH_* º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Â ´ë½Å, HTTP_AUTHORIZATION º¯¼ö¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. Áï, ´ÙÀ½ÀÇ Äڵ带 °í·ÁÇؾßÇÕ´Ï´Ù. list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
IIS ÁÖÀÇ:: IIS¿¡¼ HTTP ÀÎÁõÀ» ÀÛµ¿ÇÏ°Ô ÇÏ·Á¸é, PHP Áö½ÃÀÚ cgi.rfc2616_headers¸¦ 0(ÃʱⰪ)À¸·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.
Âü°í: ¾ÈÀü ¸ðµå¿¡¼´Â ½ºÅ©¸³Æ®ÀÇ uid°¡ WWW-Authenticate Çì´õÀÇ realm ºÎºÐ¿¡ Ãß°¡µË´Ï´Ù.
|
|
̵̧ : 667 |
̵̧
¸ñ·Ï
|
|
| ![](/bink.gif) |
|