Python을 사용하여 웹 서비스에 인증된 요청을 보내기 위해서는 requests
라이브러리를 사용할 수 있습니다. requests
는 간편하고 직관적인 API를 제공하여 HTTP 요청을 처리하는 데 사용됩니다. 이번 블로그 포스트에서는 requests
를 사용하여 인증된 요청을 처리하는 방법에 대해 알아보겠습니다.
Basic 인증 처리하기
가장 간단한 형태의 인증은 Basic 인증입니다. Basic 인증은 요청 헤더에 인증 정보를 포함시켜서 인증을 진행하는 방식입니다. requests
를 사용하여 Basic 인증을 처리하려면 다음과 같이 요청에 포함할 헤더를 설정해주면 됩니다.
import requests
# 인증 정보 설정
username = "my_username"
password = "my_password"
url = "https://example.com/api/"
# 인증 정보를 포함한 요청 보내기
response = requests.get(url, auth=(username, password))
# 응답 처리
if response.status_code == 200:
# 성공적인 응답 처리
print("인증 성공!")
else:
# 인증 실패 혹은 다른 오류 처리
print("인증 실패!")
위의 예제에서 requests.get()
함수를 사용하여 GET 요청을 보내고, auth
매개변수를 이용하여 Basic 인증 정보를 설정합니다. 인증이 성공하면 응답의 상태 코드가 200이 되고, 성공적인 응답 처리를 할 수 있습니다. 만약 인증이 실패하거나 다른 오류가 발생하면, 상태 코드를 확인하여 오류 처리를 할 수 있습니다.
Digest 인증 처리하기
Digest 인증은 Basic 인증과 마찬가지로 인증 정보를 요청 헤더에 포함시켜 인증을 처리합니다. 다만, Basic 인증과 달리 Digest 인증은 요청 및 응답에서 보안 강화를 위해 랜덤한 값을 사용합니다.
requests
를 사용하여 Digest 인증을 처리하려면 requests_digest
패키지를 설치해야 합니다. 이 패키지는 requests
의 유지보수를 향상시켜 Digest 인증을 처리할 수 있는 기능을 제공합니다. 패키지를 설치하고 나면 다음과 같이 Digest 인증 요청을 보낼 수 있습니다.
import requests
from requests_digest import HTTPDigestAuth
# 인증 정보 설정
username = "my_username"
password = "my_password"
url = "https://example.com/api/"
# 인증 정보를 포함한 Digest 인증 요청 보내기
response = requests.get(url, auth=HTTPDigestAuth(username, password))
# 응답 처리
if response.status_code == 200:
# 성공적인 응답 처리
print("인증 성공!")
else:
# 인증 실패 혹은 다른 오류 처리
print("인증 실패!")
위의 예제에서 requests_digest
모듈에서 HTTPDigestAuth
클래스를 가져와 requests.get()
함수에 인증 객체로 전달합니다. Digest 인증 처리는 이와 같이 간단하게 완료됩니다.
OAuth 인증 처리하기
OAuth 인증은 다른 사용자들에게 액세스 권한을 부여하기 위해 인증 및 권한 부여 프로세스를 지원합니다. requests
를 사용하여 OAuth 인증을 처리하려면 보통 OAuth
라이브러리를 사용합니다. 각각의 OAuth 서비스는 자체적인 인증 방식을 제공하므로 해당 서비스의 문서를 참고하여 인증 방식을 구현해야 합니다. 일반적으로는 OAuth 서비스에서 발급한 client_id
와 client_secret
를 사용하여 액세스 토큰을 얻어와 인증 요청에 사용합니다.
import requests
from requests_oauthlib import OAuth2Session
# OAuth 인증 정보 설정
client_id = "your_client_id"
client_secret = "your_client_secret"
authorize_url = "https://example.com/oauth2/authorize"
token_url = "https://example.com/oauth2/token"
redirect_uri = "https://your_app.com/callback"
# OAuth2세션 생성
oauth2_session = OAuth2Session(client_id, redirect_uri=redirect_uri)
# 인증 코드 얻기
authorization_url, state = oauth2_session.authorization_url(authorize_url)
# 사용자 인증 후 콜백 받기
token = oauth2_session.fetch_token(token_url, client_secret=client_secret)
# 액세스 토큰 설정
access_token = token["access_token"]
# API 요청 보내기
url = "https://example.com/api/v1/resource"
headers = {"Authorization": "Bearer " + access_token}
response = requests.get(url, headers=headers)
# 응답 처리
if response.status_code == 200:
# 성공적인 응답 처리
print("인증 성공!")
else:
# 인증 실패 혹은 다른 오류 처리
print("인증 실패!")
위의 예제는 OAuth2 인증 방식을 사용하는 경우입니다. requests_oauthlib
라이브러리에서 OAuth2Session
클래스를 사용하여 OAuth2의 세션 객체를 생성합니다. authorization_url
로 사용자를 인증 페이지로 이동시킨 후, fetch_token
메서드를 사용하여 token_url
에서 액세스 토큰을 얻어옵니다. 인증이 성공하면 액세스 토큰을 Bearer
스타일의 Authorization
헤더에 포함하여 요청을 보내면 됩니다.
결론
requests
는 Python에서 HTTP 요청을 처리하는 강력하고 인기있는 라이브러리입니다. 이 라이브러리를 사용하여 인증된 요청을 처리하는 방법에 대해 알아보았습니다. Basic 인증, Digest 인증, OAuth 인증에 대해 간단한 예제 코드를 제시했으니 웹 서비스의 인증 방식에 맞게 코드를 적용하여 사용해보세요. 필요한 인증 정보 설정과 요청 처리를 적절히 구현하면, 인증된 요청을 보내는 데 어렵지 않게 성공할 수 있을 것입니다.