Проверяет понимание архитектуры SSO-аутентификации и того, где именно должна происходить интеграция с провайдером идентификации.
SSO (Single Sign-On) — это механизм, при котором пользователь один раз аутентифицируется у провайдера идентификации (IdP), например Google, Okta или Keycloak, и получает доступ к нескольким приложениям без повторного ввода пароля. Ключевой вопрос: где именно приложение должно взаимодействовать с IdP — на клиенте или на сервере.
В большинстве протоколов SSO (OAuth 2.0, OpenID Connect, SAML) участвует client_secret — секретный ключ приложения. Если хранить его во frontend, любой пользователь через DevTools сможет его украсть. Поэтому обмен authorization code на access token и проверка подписи ID-токена выполняются на сервере.
Frontend не должен знать секретов. Его задачи — инициировать редирект на IdP и обработать возврат пользователя. Часто используется схема, где frontend просто открывает ссылку вида /auth/login, а backend уже перенаправляет на IdP.
// backend: инициируем редирект на IdP
app.get('/auth/login', (req, res) => {
const url = `https://idp.example.com/authorize?client_id=${CLIENT_ID}` +
`&redirect_uri=${REDIRECT_URI}&response_type=code&scope=openid`;
res.redirect(url);
});
// backend: обрабатываем callback
app.get('/auth/callback', async (req, res) => {
const { code } = req.query;
const tokens = await exchangeCodeForTokens(code); // с client_secret
const user = verifyIdToken(tokens.id_token);
req.session.user = user;
res.redirect('/');
});
Существует Public Client (SPA без backend), где используется PKCE и client_secret не нужен. Но даже тогда валидацию токенов и защиту API лучше делать на сервере. Для корпоративных систем с SAML интеграция почти всегда полностью на backend.
Итог: SSO-интеграцию следует размещать на backend, чтобы защитить секреты, корректно валидировать токены и управлять сессиями. Frontend выполняет только роль редиректов и отображения состояния аутентификации.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию