Ответ
SSO (Single Sign-On) — это технология, которая позволяет пользователю пройти аутентификацию один раз и получить доступ к нескольким независимым, но связанным системам без повторного ввода учетных данных.
Принцип работы чаще всего основан на протоколах OAuth 2.0 и OpenID Connect (OIDC). Провайдер идентификации (IdP), например Google или Keycloak, аутентифицирует пользователя и выдает токен (JWT), который клиентское приложение использует для авторизации.
Преимущества:
- Для пользователей: Удобство, не нужно запоминать множество паролей.
- Для бизнеса: Повышенная безопасность за счет централизованного управления доступом и политиками.
Пример базовой интеграции с Google SSO в Python (Flask + authlib):
from flask import Flask, redirect, url_for, session
from authlib.integrations.flask_client import OAuth
app = Flask(__name__)
app.secret_key = 'your-super-secret-key'
oauth = OAuth(app)
google = oauth.register(
name='google',
client_id='YOUR_CLIENT_ID.apps.googleusercontent.com',
client_secret='YOUR_CLIENT_SECRET',
access_token_url='https://accounts.google.com/o/oauth2/token',
authorize_url='https://accounts.google.com/o/oauth2/auth',
api_base_url='https://www.googleapis.com/oauth2/v1/',
client_kwargs={'scope': 'openid email profile'}
)
@app.route('/login')
def login():
redirect_uri = url_for('callback', _external=True)
return google.authorize_redirect(redirect_uri)
@app.route('/callback')
def callback():
token = google.authorize_access_token()
# Получаем информацию о пользователе из ID токена
user_info = google.parse_id_token(token)
session['user'] = user_info
return 'Logged in successfully!'