Назад

Кроссдоменная авторизация

Однажды мы сделали наш движок многосайтовым с поддержкой «Over 9000+» доменов для одного сайта. Но долгое время оставался не решенным один вопрос. Были у нас сайты, на которые вели несколько доменов, например, сайт компании OlimpFood. На этом сайте приблизительно 100 доменных имен. И допустим администраторам сайта приходилось работать с несколькими доменами в течение дня и на каждом приходилось авторизовываться.

Это была не ошибка движка. Видите ли, в данный момент поисковые системы и браузеры один и тот же физический сайт видят, как абсолютно разные. Тут и возникает проблема в авторизации. Напрямую такое реализовать не удалось бы.

В связи с этим был придуман обходный вариант. У нас уже есть сервер авторизации через социальные сети. Т.е. всем обладателям копии нашей платформы нет надобности регистрировать приложение и свой сайт в социальных сетях, для авторизации через них. Это мы взяли на себя, предоставив такую возможность по «дефолту».

Т.к. наш единственный сервер имеет только один домен, то мы и сделали его центром авторизации. Далее мы объясним Вам схему, примеров кода не будет, т.к. придется публиковать половину кода движка.

Итак, основано все на «Open Security Code», как мы это называем. Вы, как посетитель, нашего сайта, заходите на любой сайт, реализованный через наш «движок», у Вас сперва нет этого кода, Вам он присваивается с прикреплением к нему персональными данными. Эти данные хранятся исключительно на посещаемом сайте, для центра авторизации они не нужны. Далее Ваш «Open Security Code» передается асинхронным запросом на наш сервер авторизации, там он хранится как обычная сессия.

Далее мы добавили поддержку опроса нашего сервера для сравнения и проверки «Open Security Code». Заходя на тот же сайт под другим доменом у Вас появляется новый код, но также делается запрос на сервер авторизации для получения уже существующего кода. Если он существует, т.е. вы уже ранее авторизовались, сайт получит этот код и сделает редирект с присвоением этого самого кода.

Вот мы и разобрались как реализован принцип работы «Open Security Code». Давайте теперь разберемся, что сайты делают с этими кодами. Итак, когда во время авторизации Вам присвоили код, сайт также сохранил Ваши данные, такие как: браузер, внутренний ID, имя компьютера и т.д. Сайт загружает из своей базы данные об актуальном «Open Security Code». Далее он сравнивает данные клиента из базы знаний с теми что переданы Вами. И только в 100% совпадении данных сайт решает, что вы авторизованы. Если хоть один символ в Ваших данных клиента не соответствует, Вы оказываетесь неавторизованными.

У Вас могут возникнуть резонные вопросы относительно безопасности. Видите ли, данных для сравнения очень много, это раз. Далее, если при сравнении данных произошла ошибка, то «Open Security Code» тут же удаляется и больше им нельзя будет воспользоваться. Это все обеспечивает максимальную защиту авторизации даже по протоколу HTTP.

И как некоторые вытекающие «плюшки» - это возможность удалять все прочие авторизации. Если вы зашли на один из сайтов на компьютере друга, то через админ. панель, можно удалить все авторизации кроме текущей. И Ваш любопытный друг, открыв сайт и увидев, что авторизован под Вашим именем, в течение нескольких секунд в недоумении обнаружит, что каким-то образом произошел выход из аккаунта.

Если Вам помогла данная статья в решении вопроса кроссдоменной авторизации, и вы хотите нам сказать спасибо, то сделайте поделитесь ссылкой на материал в соц. Сети.

3482 просмотра
Опубликованно: 17 Июня 2018
Андрей Кобелев
Автор статьи
Андрей Кобелев
Понравилась статья ? Тогда поделись ей с друзьями

Fatal error: Class 'share' not found in /var/www/html/build/templates/owe-new/modules/notes/blog_page/view_note.php on line 63