Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- NIO
- 리눅스
- write by GPT-4
- 역학
- lombok
- write by chatGPT
- 인프라
- oracle
- flet
- 자바
- python
- android
- 뉴턴역학
- kotlin
- 자바암호
- 소프트웨어공학
- 고전역학
- 웹 크롤링
- GPT-4's answer
- 유닉스
- 파이썬
- chatGPT's answer
- 자바네트워크
- JVM
- Java
- Database
- 코틀린
- 시스템
- Spring boot
- GIT
Archives
- Today
- Total
Akashic Records
Python 사용자 인증 (JWT) 받기 본문
728x90
웹 API에 Authorization
헤더를 추가하여 JWT (JSON Web Token)를 사용한 인증 방법을 사용할 때는 requests
라이브러리의 headers
매개변수를 사용하여 요청을 보낼 수 있습니다. 이 방법은 API가 JWT 인증을 요구하는 경우 자주 사용됩니다.
JWT를 사용한 Authorization 헤더 설정 예제
import requests
from bs4 import BeautifulSoup
def fetch_jwt(response):
# URL에서 웹 페이지를 가져옵니다.
if response.status_code == 200:
return response.headers.get('Authorization')
else:
return YOUR_JWT_TOKEN
def fetch_web_data(url):
headers = {
'Authorization': f'Bearer {YOUR_JWT_TOKEN}'
}
return requests.get(url, headers=headers)
def extract_title(response):
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# <title> 태그의 내용을 추출합니다.
title_tag = soup.find('title')
return title_tag.text
else:
return None
# 로그인 정보와 URL 설정
LOGIN_URL = "http://localhost:8088/api/user/login"
USERNAME = "admin"
PASSWORD = "xxxx"
DATA_URL = "http://localhost:8088/swagger-ui/index.html"
login_data = {
'username': USERNAME,
'password': PASSWORD
}
# Session 객체 생성
session = requests.Session()
# 로그인 요청 (Content-Type: application/json)
response = session.post(LOGIN_URL, json=login_data)
response.raise_for_status() # 로그인 실패 시 예외 발생
# 로그인하고 첫번째 token
YOUR_JWT_TOKEN = response.headers.get('Authorization')
print("Login Token:", YOUR_JWT_TOKEN)
print("Response Headers:")
print(response.headers)
response = fetch_web_data(DATA_URL)
YOUR_JWT_TOKEN = fetch_jwt(response)
print("Token:", YOUR_JWT_TOKEN)
print("Page Title:", extract_title(response))
코드 설명
- JWT 토큰 준비: 실제 사용시 JWT 토큰은 로그인 과정을 통해 서버로부터 받게 되거나, 다른 인증 메커니즘을 통해 획득하게 됩니다. 토큰은 보안에 매우 중요하므로 안전하게 관리해야 합니다.
- Authorization 헤더 설정: HTTP
Authorization
헤더를 설정할 때는 "Bearer" 다음에 공백을 두고 JWT 토큰을 넣습니다. 이 형식은 Bearer 토큰을 사용하는 표준 방식입니다. - 요청 보내기:
requests.get()
함수를 사용하여 API에 요청을 보냅니다. 이 때,headers
매개변수에 위에서 정의한 헤더 딕셔너리를 전달합니다. - 응답 처리: 응답을 받고 JSON 형태로 파싱합니다.
raise_for_status()
메소드는 요청이 실패한 경우(예: 401 Unauthorized, 403 Forbidden 등) 예외를 발생시켜 적절한 에러 핸들링을 할 수 있도록 합니다.
보안 주의사항
- 토큰 유출 방지: JWT 토큰은 중요한 보안 정보를 포함하고 있으므로, 코드 내 하드코딩을 피하고 환경 변수나 보안이 강화된 설정 파일에서 관리하는 것이 좋습니다.
- HTTPS 사용: 인증 정보를 포함한 모든 요청은 HTTPS를 통해 암호화되어야 합니다. 이는 중간자 공격(man-in-the-middle attacks)으로부터 토큰이 유출되는 것을 방지합니다.
이 예제는 JWT를 사용하여 인증이 필요한 API에 안전하게 접근하는 방법을 보여줍니다. 실제 사용 환경에서는 API의 인증 요구사항과 보안 정책에 맞게 코드를 조정해야 합니다.
728x90
'Web Crawling for Beginners' 카테고리의 다른 글
웹 크롤링에 robots.txt 적용하기 (0) | 2024.04.30 |
---|---|
학습사이트 http://books.toscrape.com 크롤링 결과 DB 저장 (0) | 2024.04.26 |
Python 사용자 인증 (Session) 받기 (0) | 2024.04.25 |
학습사이트 http://quotes.toscrape.com/ BFS 크롤링 (0) | 2024.04.24 |
학습사이트 http://books.toscrape.com BFS 크롤링 (0) | 2024.04.24 |
Comments