SAML Authentication on API Rest, откройте страницу аутентификации

Я действительно новичок в SAML, и мне пришлось настроить систему аутентификации SAML. Мы работаем над API Platform и Angular 7+.

Все работает нормально, API аутентифицируется для SSO с помощью SAML, а клиент аутентифицируется в API с JWT.

Но проблема в том, что когда пользователь не аутентифицирован для SSO, как сообщить клиенту «перенаправить пользователя или открыть всплывающее окно» на страницу аутентификации SSO.

Я искал несколько ответов, но похоже, что аутентификация SAML не очень популярна в Rest API World.

Заранее спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
978
2

Ответы 2

Я не уверен, что SAML был создан для работы с API. Насколько мне известно, он был разработан для использования с веб-страницами.

Разве нельзя просто вернуть HTTP 401 и оставить обработку ошибок клиенту? Служба REST не должна перенаправлять пользователя на страницу входа, потому что это ресурс, а не преобразователь представлений.

Обновлено: Как я вижу это:

  1. клиент отправляет запрос REST без заголовка Auth (JWT)
  2. API отвечает 401 и телом, как {"error":"auth required","url":"SSO_http_url"}, без связи с SSO
  3. клиент должен обработать ошибку - перенаправить пользователя в службу SSO и получить токен JWT
  4. клиент отправляет новый запрос с допустимым заголовком Auth (JWT)

Привет, спасибо за ответ. Проблема в том, что API попытается войти в систему, если в заголовке нет токена авторизации. Таким образом, он отправит 301 клиенту. Но обработать 301 не получится.

Martin Paucot 18.12.2018 11:40

Думаю, я неправильно понял проблему. API пытается войти в систему единого входа от имени пользователя, если он не представил токен авторизации? 301 возвращается на сервер API службой единого входа?

Irek L. 18.12.2018 11:58

Когда мы пытаемся пройти аутентификацию в SAML, он перенаправляет нас в систему входа в SAML (как и в форме входа в систему), для этого используется 302 (а не 301, извините). Я добавил ответ с указанием, как я могу делать то, что хочу. Не стесняйтесь высказать свое мнение.

Martin Paucot 18.12.2018 12:02

Возможно, я нашел способ делать то, что хочу, я не должен аутентифицировать пользователей от клиента к SAML с API в качестве моста, у них будет много проблем (перенаправления, Cors и т. д.).

Итак, вот шаги:

  • Клиент пытается аутентифицироваться в API с помощью токена JWT
  • Клиент не подключен, API возвращает 302 клиенту для перенаправления в систему аутентификации API SAML.
  • API попытается аутентифицировать пользователя в SAML (автоматическая аутентификация, перенаправление в форму входа и т. д.)
  • При успешном входе в систему API перенаправляет пользователя к клиенту с новым токеном JWT, чтобы разрешить пользователю доступ.

Надеюсь, сработает ^^

Другие вопросы по теме