kjh00n의 기록저장소
WEB 인증(Authentication) 본문
WEB 서비스 인증
Server의 자원을 요청한 Client가 시스템 또는 자원에 허가된 대상인지 확인
WEB 서비스 인증 종류
1. System 인증
- Server가 설치된 운영체제의 계정을 통해 사용자를 인증
- 익명(Anonymous) 인증 = 관리자가 미리 인증한 상태로 Client가 접속하는 방식
- 기본(Basic) 인증 = WEB Server에 ID와 PW를 저장하고 WEB Page 요청시 ID와 PW를 전달하면 운영체제에서 인증
- HTTP Digest 인증 = Window 운영체제에서 Domain이라는 계정을 통해 인증하는 방식
- → Window 운영체제가 설치된 다수의 컴퓨터 모임을 Domain이라고 한다.
- HTTP NTLM(Windows 통합) 인증 = Window Server 운영체제에서 지원하는 윈도우 웹 서버인 IIS에서 사용 가능
- → NTLM : Window에서 사용하던 인증 시스템
2. Web Application 인증
- WAS에서 지정한 방식으로 사용자 인증
- 사용자가 직접 Server에 생성한 계정 정보를 이용하여 WAS가 인증을 처리하는 방식
- Form Based Authentication
Form Based Authentication
- HTML 기능 중에서 Form이라는 기능이 있다.
- Form이라는 기능은 사용자에게 값을 입력받아 Server에게 전달하는 기능
- 전달받은 Server는 WAS에서 입력값을 전달하고 WAS는 입력값을 코드에 따라 처리한다.
- 나온 결과에 따라 응답을 진행한다.
기본(Basic) 인증
● Page의 Main Page 만들기 (index.html)
● /var/www/html/auth 디렉토리 만들기
● auth 디렉토리에 auth.html파일 만들기
● httpd.conf 설정
<directory "/var/www/html/auth">
authtype basic
# 기본 인증 방식을 사용하도록 설정 (사용자명과 비밀번호를 요청하는 방식)
authname "ID/PW"
# 인증 창에 표시될 메시지 (사용자에게 'ID/PW'라고 보여짐)
authuserfile "/auth/userfile"
# 사용자 이름과 비밀번호가 저장된 파일 경로
# 이 파일에 등록된 사용자가 인증을 거쳐야 함
require valid-user
# userfile에 등록된 유효한 사용자만 접근 가능
# 유효한 사용자만 이 디렉토리에 접근할 수 있음
</directory>
● 최상위 디렉토리 밑에 auth 디렉토리 만들기
● htpasswd -c /auth/userfile admin 입력
htpasswd
# Apache의 htpasswd 명령어는 사용자 인증 정보를 담은 파일을 생성하거나 수정하는 데 사용됩니다.
-c
# -c 옵션은 "create"를 의미합니다. 이 옵션은 새로운 사용자 파일을 생성하거나 기존 파일을 덮어쓰게 됩니다.
# (파일이 이미 존재하면 덮어쓰기가 되므로, 주의해서 사용해야 합니다.)
/auth/userfile
# 사용자 인증 정보를 저장할 파일 경로입니다.
# 이 파일에 사용자명과 암호화된 비밀번호가 저장되며, 웹 서버에서 인증을 할 때 사용됩니다.
admin
# 이 부분은 새로 추가할 사용자 이름입니다.
# 예를 들어, 'admin'이라는 사용자가 'userfile'에 추가됩니다.
● PW로 1234 입력 ↓
New password: [비밀번호 입력]
Re-type new password: [비밀번호 재입력]
#여기에 비밀번호로 1234 입력
● 이후에 192.168.50.200/auth/auth.html 접속
Form Based Authentication
<form action="login.php">
<!-- 사용자 ID를 입력할 텍스트 박스 -->
ID: <input type="text" name="user_id"><br>
# name="user_id"는 서버로 전송될 때 이 입력값을 'user_id'라는 이름으로 전송하게 됨
# 예를 들어, 'user_id=admin'처럼 서버에 전달됨
<!-- 사용자 비밀번호를 입력할 비밀번호 박스 -->
PW: <input type="password" name="user_pw"><br>
# type="password"는 입력한 문자가 화면에 보이지 않도록 숨김
# name="user_pw"는 서버로 전송될 때 이 입력값을 'user_pw'라는 이름으로 전송하게 됨
# 예를 들어, 'user_pw=1234'처럼 서버에 전달됨
<!-- 로그인 버튼: 이 버튼을 클릭하면 폼이 제출되어 서버로 데이터가 전송됨 -->
<input type="submit" value="로그인">
# submit하면 'login.php' 페이지가 서버로 요청되고, 이 페이지에서 폼 데이터를 처리하게 됨
# 즉, 'login.php'는 폼 데이터(user_id, user_pw)를 받아서 로그인 처리를 할 PHP 파일
</form>
● 192.168.50.200으로 접속 ↓
● ID에 root PW에 1234 입력 ↓ (GET 메소드로 입력됨)
● login.php (yum -y install php) (httpd를 재시작해서 php구동)
● /var/www/html/login.php 파일 만들기 ↓
<?php
echo $_GET["user_id"];
# $_GET["user_id"]는 URL에서 'user_id'라는 파라미터 값을 가져옵니다.
# 예를 들어, URL이 'example.com?user_id=admin'이라면 $_GET['user_id']는 'admin'이 됩니다.
# 가져온 값을 화면에 출력하는 echo 함수가 실행됩니다.
echo $_GET["user_pw"];
# $_GET["user_pw"]는 URL에서 'user_pw'라는 파라미터 값을 가져옵니다.
# 예를 들어, URL이 'example.com?user_id=admin&user_pw=1234'라면 $_GET['user_pw']는 '1234'가 됩니다.
# 가져온 값을 화면에 출력하는 echo 함수가 실행됩니다.
?>
● 다시 192.168.50.200에서 ID,PW치고 접속
login.php가 없다면, 폼을 제출해도 데이터가 전송되지 않거나, 데이터가 처리되지 않습니다.
login.php 파일을 작성하고, 그 안에 로그인 처리 로직을 추가해야만 사용자가 입력한 ID와 비밀번호를 검증하고, 로그인이 정상적으로 이루어집니다.
'SW개발 보안 구축' 카테고리의 다른 글
WEB Encoding (0) | 2024.11.15 |
---|---|
WEB Session (0) | 2024.11.15 |
FTPS 구축 (0) | 2024.11.14 |
SSL 서버 구축 (0) | 2024.11.14 |
SSL (0) | 2024.11.14 |