본문 바로가기
Ubuntu

3.[서버] Django를 이용해서 나만의 홈페이지를 만들어보자 [2/2 로그인 기능] 미리보기

by 모아모아 리뷰 2023. 11. 16.
반응형

이번시간에는 SSL 서버 구동으로 https 보안 소켓 을 이용하여 로컬 서버 여는 방법과 Google Cloud Oauth2.0 클라이언트 키 발급을 통해서 구글로 로그인 하는 방법을 알아보겠습니다.

 

절차 :

Google 클라이언트 ID 생성 > Ubuntu Google KEY settings > Ubuntu SSL settings > https:localhost:8000 접속 

 

참고문헌 :

https://developers.google.com/identity/protocols/oauth2?hl=ko

 

1. Oauth 웹 클라이언트 ID 만들기 :

https://console.cloud.google.com/

I : API 및 서비스 > 사용자 인증 정보 클릭

 

II : Oauth2.0 클라이언트 ID 생성 :

처음 프로젝트를 생성 하였으면 Oauth2.0 클라이언트 ID 란은 Null임.

사용자 인증 정보 만들기 > Oauth 클라이언트 ID 

 

III : Oauth 클라이언트 ID 만들기 :

승인된 리디렉션 URL 입력 > 만들기

http://localhost:8000/complete/google-oauth2/

 

 

* Oauth 프토토콜 설명 

1. 클라이언트 앱은 서비스 제공자에게 사용자의 데이터에 대한 액세스 권한을 요청
2. 사용자는 서비스 제공자의 로그인 페이지로 이동하여 자격 증명을 제공받음
3. 클라이언트는 이 액세스 토큰을 사용해 서비스 제공자의 api에 요청을 보내고 사용자의 데이터에 접근

 

 

IIII : 클라이언트 ID 발급 확인 :

정상적으로 발급된 화면을 볼 수 있음

 

2. Ubuntu Google KEY settings :

 

I : Django Project settings : 

내가 만들어놓은 프로젝트 루트로 들어가서 settings.py 를 열고 조금 전 발급 받은 고유 키 복사

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'social_django',
    'datafunction_app',
    'sslserver',
]

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '클라이언트 ID'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '클라이언트 보안 비밀번호'
SOCIAL_AUTH_GOOGLE_OAUTH2_REDIRECT_URI = 'https://127.0.0.1:8000/social/complete/google-oauth2/'

SOCIAL_AUTH_REDIRECT_IS_HTTPS = False

LOGIN_URL = 'login'
LOGOUT_URL = 'logout'
LOGIN_REDIRECT_URL = 'home'

 

settings.py

 

Views.py

from django.shortcuts import render, redirect
from social_django.models import UserSocialAuth
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse

@login_required
def home(request):
    return render(request, 'home.html')

def login(request):
    return render(request, 'login.html')

def google_authenticate(request):
    # 구글 리디렉션 Oauth login URL
    return redirect('social:begin', 'google-oauth2')

 

urls.py

# datafunction_app/urls.py

from django.urls import path, include
from .views import home, login, google_authenticate

urlpatterns = [
    path('home/', home, name='home'),
    path('login/', login, name='login'),
    path('google-auth/', google_authenticate, name='google-auth'),
    path('social/', include('social_django.urls', namespace='social')),
    # 다른 URL 패턴들을 필요에 따라 추가
]

 

 

II : Migrate 확인 :

지금까지 추가한 변경사항 저장

python manage.py migrate

 

 

3. Ubuntu SSL settings

django-sslserver 패키지를 사용하여 https 로컬로 서버를 여는 방법을 알아볼게요

 

I : django-sslserver 패키지 설치 :

pip install django-sslserver

II : settings.py INSTALLED_APPS > sslserver 추가 :

INSTALLED_APPS = [
	#... 밑에 sslserver 추가
    'sslserver',
]

III : runsslserver 명령어로 SSL 개발 서버 실행 :

python manage.py runsslserver

 

결과 :

Google Auth 인증 전

 

Google Auth 인증 단계 로그

 

Google Auth 인증 후 home form 으로 이동

반응형

최근댓글

최근글

skin by © 2024 ttutta