Фон
Использование Firebase Auth и провайдера аутентификации SAML со следующей конфигурацией:
const config = {
apiKey: "AIzaSy...",
authDomain: "example-app.firebaseapp.com",
};
firebase.initializeApp(config);
const provider = new firebase.auth.SAMLAuthProvider('saml.example-idp');
function saml() {
firebase.auth().signInWithRedirect(provider)
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error);
});
}
Конфигурация CICP для восходящего потока SAML имеет провайдера услуг: идентификатор нашей сущности и ACS настроен как наш CICP https://example-app.firebaseapp.com/__/auth/handler
.
То, что я ожидаю, произойдет
Чтобы иметь возможность установить точку останова в signInWithRedirect()
Обещании then
и увидеть аутентифицированного пользователя.
Что на самом деле происходит
Поток перенаправляется на IdP, а аутентификация обрабатывается.
IdP генерирует страницу публикации перенаправления с автоматическими c submit-on-load и multipart/form-data
форма с:
- Content-Disposition: form-data; name = SAMLResponse - содержит подписанный SAMLResponse с кодировкой base64
- Content-Disposition: form-data; name = RelayState - содержит состояние реле из потока SAML
- Content-Disposition: form-data; name = "ssourl" - содержит URI обработчика аутентификации проекта firebase
Это, в свою очередь, заставляет CICP отображать и возвращать страницу со скриптом, который устанавливает
var POST_BODY=""------WebKitFormBoundary9bn7AOpnZiIRk9qZ\r\nContent....."
, т. е. вместо Анализируя тело формы и извлекая поле SAMLResponse, он воспроизводит весь Request.body в сценарий, а затем вызывает fireauth.oauthhelper.widget.initialize();
Это, очевидно, завершается ошибкой, потому что это циклически обрабатывает, а затем пытается отправить все тело ответа на /__/auth/handler
конечная точка в виде строки запроса.
Я подозреваю, что в этой цепочке отсутствует простой элемент конфигурации, потому что все потоки выглядят нормально для меня, пока данные многочастной формы не будут помещены в POST_BODY, а затем предотвратят преобразование токена SAML в OAuth. token.
Вопрос
Какой элемент конфигурации является неправильным в этой (отредактированной) настройке и каков правильный вывод значения для его замены?