Що таке OAuth 2.0 і як ним користуватись ?

Дата: Sep 25, 2023, 2:17 PM
Що таке OAuth 2.0 і як ним користуватись ?

Вступ

OAuth 2.0 — це відкритий стандарт авторизації, який набув великої популярності серед розробників. Цей протокол дозволяє користувачам надавати стороннім додаткам обмежений доступ до своїх облікових записів без необхідності передавати логін та пароль.

Як це працює?

  1. Користувач звертається до додатка із запитом на доступ до певних ресурсів.
  2. Додаток перенаправляє користувача на сторінку авторизації постачальника сервісу.
  3. Після успішної авторизації постачальник сервісу видає токен доступу.
  4. Додаток використовує цей токен для доступу до ресурсів користувача.

Основні компоненти

  • Клієнт: Додаток, який звертається за доступом до ресурсів користувача.
  • Сервер авторизації: Сервер, який авторизує користувача і видає токени доступу.
  • Ресурсний сервер: Сервер, на якому зберігаються ресурси користувача.

Типи OAuth 2.0 Flows

  • Authorization Code Flow: Найбезпечніший метод, підходить для серверних додатків.
  • Implicit Flow: Використовується для клієнтських додатків, де неможливо зберегти таємницю клієнта.
  • Client Credentials Flow: Використовується для авторизації між серверами.
Тип Flow Підходить для Безпека
Authorization Code Flow Серверні додатки Висока
Implicit Flow Клієнтські додатки Середня
Client Credentials Flow Сервер-сервер Висока

Переваги та недоліки

Переваги

  • Безпека: Немає необхідності передавати логін та пароль.
  • Гнучкість: Можливість надавати обмежений доступ до ресурсів.
  • Сумісність: Багато великих компаній підтримують OAuth 2.0.

Недоліки

  • Складність: Для новачків може бути важко освоїти.
  • Відсутність шифрування: Необхідно додатково забезпечувати передачу даних.

Інтеграція OAuth 2.0 в сайти та додатки

Підготовчий етап

  1. Реєстрація додатку: Перш за все, вам потрібно зареєструвати ваш додаток на платформі, з якою плануєте інтегрувати OAuth 2.0 (наприклад, Google, Facebook тощо).

  2. Отримання ключів: Після реєстрації ви отримаєте Client ID та Client Secret, які будуть використовуватися для авторизації.

Основні кроки інтеграції

  1. Запит на авторизацію: Ваш додаток перенаправляє користувача на URL авторизації постачальника сервісу.

  2. Повернення коду авторизації: Після успішної авторизації, постачальник перенаправляє користувача назад на ваш сайт, передаючи код авторизації.

  3. Отримання токена доступу: Ваш сервер обмінює код авторизації на токен доступу, використовуючи Client ID та Client Secret.

  4. Доступ до ресурсів: За допомогою отриманого токена ваш додаток може звертатися до ресурсних серверів для доступу до інформації користувача.

Бібліотеки та SDK

Багато мов програмування мають готові бібліотеки для роботи з OAuth 2.0. Наприклад:

  • PythonOAuthLibsocial-auth-app-django
  • JavaScriptpassport.jshello.js
  • JavaSpring Security OAuthApache Oltu

Заходи безпеки

  • HTTPS: Завжди використовуйте HTTPS для передачі даних.
  • Зберігання токенів: Ніколи не зберігайте токени доступу на клієнтській стороні.

 

Інтеграція OAuth 2.0 може бути досить простою завдяки готовим бібліотекам та SDK, але важливо дотримуватися найкращих практик безпеки. Це не тільки зробить ваш додаток безпечнішим, але і підвищить довіру з боку користувачів.

Інтеграція авторизації через Google з використанням OAuth 2.0

Технології

  • Backend: Python (Flask)
  • Frontend: HTML, JavaScript

Підготовчий етап

  1. Відвідайте Google Developer Console і створіть новий проект.
  2. Увімкніть API "Google+ API" або "Google Sign-In".
  3. Отримайте Client ID та Client Secret.

Backend: Flask

Встановіть потрібні пакети:

pip install Flask

pip install requests

Створіть файл app.py:

from flask import Flask, redirect, request, session, url_for

import requests

 

app = Flask(__name__)

app.secret_key = 'your_secret_key'

 

CLIENT_ID = 'YOUR_GOOGLE_CLIENT_ID'

CLIENT_SECRET = 'YOUR_GOOGLE_CLIENT_SECRET'

REDIRECT_URI = 'http://127.0.0.1:5000/oauth2callback'

AUTH_URI = 'https://accounts.google.com/o/oauth2/auth'

TOKEN_URI = 'https://accounts.google.com/o/oauth2/token'

 

@app.route('/')

def index():

    if 'credentials' in session:

        return "You are logged in."

    return 'You are not logged in.'

 

@app.route('/login')

def login():

    auth_url = f"{AUTH_URI}?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope=email&response_type=code"

    return redirect(auth_url)

 

@app.route('/logout')

def logout():

    session.pop('credentials')

    return redirect(url_for('index'))

 

@app.route('/oauth2callback')

def oauth2callback():

    code = request.args.get('code')

    data = {'code': code, 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET,

            'redirect_uri': REDIRECT_URI, 'grant_type': 'authorization_code'}

    r = requests.post(TOKEN_URI, data=data)

    session['credentials'] = r.json()['access_token']

    return redirect(url_for('index'))

 

if __name__ == '__main__':

    app.run(debug=True)

Frontend: HTML & JavaScript

 

  1. Створіть файл templates/index.html:

<!DOCTYPE html>

<html>

<head>

    <title>OAuth 2.0 Google</title>

</head>

<body>

    <h1>Welcome</h1>

    <a href="/login">Login with Google</a>

</body>

</html>

Запуск та тестування

 

  1. Запустіть ваш Flask додаток:

python app.py

  1. Відкрийте веб-браузер і перейдіть на http://127.0.0.1:5000.

  2. Натисніть на посилання "Login with Google" та пройдіть авторизацію.

 

Цей простий приклад показує, як інтегрувати Google OAuth 2.0 в ваш веб-додаток на Flask. Після успішної авторизації, токен доступу зберігається в сесії, і ви можете використовувати його для подальших запитів до Google API. Зверніть увагу, що це лише базовий приклад, і для продакшну рекомендується використовувати додаткові заходи безпеки.

Висновок

 

OAuth 2.0 є потужним інструментом для безпечної авторизації в сучасних веб-додатках та мобільних застосунках. Він забезпечує високий рівень безпеки та гнучкість, хоча і має свої недоліки, які, однак, можна вирішити додатковими заходами безпеки.


Категорія: Технології
Поділіться з друзями: