30 апреляApr 30 Делаю приложение для входа на сайт через VK и Яндекс в Invision Community 5.Если надо кому могу выложить для начала на тесты. Мне нужна обратная связь по интеграции привязки нескольких соцсетей к одному аккаунту. Надо погонять учетную запись привязав к ней другие соцсети и проверять чтобы синхронизация email и аватар работала исправно. Там еще много всяких нюансов работы приложения.Важный момент. Для создания OAuth 2+ приложений в VK ID и Яндекс ID надо привязывать к ним госуслуги. На VK ID надо быть предпринимателем ОАО ООО ИП или хотя бы самозанятым не только в налоговой но еще оформить самозанятость в Сбере или в Т банке.Если есть желающие пишите тут. После тестов выложу приложение в бесплатный доступ с исходниками.Яндекс ID работает в чистом Invision Community 5 если в /admin/?app=core&module=settings&controller=login&do=form добавить стандартный Other OAuth 2.0. Я в своем приложении добавляю проверку минимального возраста указанного в соцсети и запрет на регистрацию с emai из черных списков.С VK ID всё сложно, стандартный Other OAuth 2.0 не подойдет, надо отдельное приложение делать.
12 июняJun 12 Яндекс уже имеется https://invision-market.com/apps/integrations/yandex-login-handler-r292/Vk.id тоже где-то был.
13 июняJun 13 On 30.04.2026 at 17:06, aplayer said:С VK ID всё сложно, стандартный Other OAuth 2.0 не подойдет, надо отдельное приложение делать.Я сделал авторизацию через VK в публичную часть. Авторизацию в ACP настроить пока не получилось. Если можешь доделать авторизацию в ACP, могу скинуть beta.On 30.04.2026 at 17:06, aplayer said:Яндекс ID работает в чистом Invision Community 5Тоже планирую это делать. Если есть наработки, пришли для теста. Посмотрю у себя как работает. Подправлю если что.
20 июняJun 20 Author Собственно здесь всёОбращаю внимание. Я не нашел внутреннего метода движка на получение списка запрещенных Email поэтому он берется напрямую из БД при каждом запросе. Если у вас огромный список или тысячи регистраций, то надо это дело кешировать в редис.сейчас это дело выглядит не очень и требует создания методов кеширования /* Check banned email address */ if ($this->settings['drop_banned_email']) { foreach (\IPS\Db::i()->select('ban_content', 'core_banfilters', array("ban_type=?", 'email')) as $bannedEmail) { if (preg_match('/^' . str_replace('\*', '.*', preg_quote($bannedEmail, '/')) . '$/i', self::$response['email'])) { unset(self::$response['email']); break; } } } Для VK проверка email необходима, так как там у людей много лет назад были указаны емайлы которые сейчас не существуют и движок будет регулярно слать им новости. Из за чего в ваших почтовых ящиках письма от Mail Delivery System со временем разбухают до гигабайтов если их вовремя не удалять. А в данный момент email не является обязательным для создания VK аккаунта.С яндексом таких проблем нет там email является логином аккаунта и он не может быть несуществующим. А если пользователь удалит акк на яндексе, то не сможет зайти на ваш сайт.VK_YA_Login.7z Edited 20 июняJun 20 by aplayer
20 июняJun 20 Author это не приложение, а только исходники, которые вы можете закинуть в своё разрабатываемое приложение.
21 июняJun 21 Author 7 часов назад, Zero108 said:Так решен вопрос с авторизацией в ACP через VK или нет?исходники полностью рабочие, создайте новое приложение и закиньте их туда.Готовое приложение выложить не могу по техническим причинам
21 июняJun 21 Ваш код не работает в моем серверном окружении. Возможно, это не проблема вашего кода. Если у вас авторизация в админку проходит, замечательно.
21 июняJun 21 Удалось решить проблему после недели тестирования и поиска корня проблемы. Авторизация в админцентр через vk работает.ПроблемаVK ID портит параметр state на своей стороне: из base64-сегмента исчезают символ / и хвостовой =. IPS5 core декодирует испорченный сегмент как URL и получает мусор — редирект уходит на несуществующую страницу.РешениеПеред отправкой пользователя на VK сохраняем нетронутый state в httponly-cookie, ключ — csrfKey (чистый hex, VK его не трогает). При возврате от VK проверяем state: корректный base64 всегда имеет длину кратную 4, повреждённый — нет. Если проверка не прошла, подставляем сохранённый state из cookie вместо испорченного, до того как запрос попадает в IPS core. Edited 21 июняJun 21 by Zero108
21 июняJun 21 Author Вот забыл там еще файлик с callback.php где починена эта проблема ya_vk_login.7z
21 июняJun 21 Author Слыхали недавно проблема была российскими хостерами в Голландии? Там у меня dev проект сдох. Остались только эти исходники на гитхабе. В общем в Dev Mode создайте приложение с директорией clogin , назовите его например Custom Login. добавьте в Developer Center пару Extension c типом Login Handler и скопируйте в них код из папки extensions моих исходников. Остальные файлы закиньте просто так.отключите \define('IN_DEV', true); он вызывает ошибки admin/?app=core&module=settings&controller=login - там добавьте методы регистрации итписходники завязаны на директорию clogin и в другой работать не будут
22 июняJun 22 Author 7 часов назад, Zero108 said:А можно поинтересоваться, о чем вы сейчас пишите?о том что у меня голландцы грохнули сервер на котором лежал полный рабочий проект. Остались только исходники на гитхабе. Эти исходники полностью рабочие и пригодны их можно закинуть в новое приложение у которого директория clogin или найти соответствующий неймспейс и переправить на свой.7 часов назад, Zero108 said:Какую проблему решают костыли?там нет костылей. Всё только в рамках семантики IPS движка. Со всеми паттернами проектирования и принципами SOLID Edited 22 июняJun 22 by aplayer
22 июняJun 22 Вам не кажется или кажется, что приложение должно работать из коробки без оглядки на квалификацию пользователя, без странных оглядок на имя директории, без непонятных слов "Dev Mode"? Может это карма с сервером?
22 июняJun 22 Author 52 минуты назад, Zero108 said:без странных оглядок на имя директориив IPS приложения жестко привязываются к директории. Это значит если вы создаете приложение в директории myapp то это будет неймспейсом всех классов вашего приложения.Далее вы все классы будете объявлять/вызывать \IPS\myapp\MyClass... 58 минут назад, Zero108 said:непонятных слов "Dev Mode"интересно как вы сделали приложение для авторизации в публичной части без Developer Center
22 июняJun 22 9 минут назад, aplayer said:интересно как вы сделали приложение для авторизации в публичной части без Developer CenterЯ уже писал, как я делаю приложения. Я творчески подхожу к заданию, как настоящий художник. Для меня это творчество. Затем использую искусственный интеллект. Проверяю. Сложные ребята, зафиксированные в своем сферическом вакууме и своей временной петле, больше не нужны. Творить прекрасно - это помогает саморазвитию. С удовольствием поделюсь вами примером работы своих приложений. Edited 22 июняJun 22 by Zero108
22 июняJun 22 Author Приложение для входа через ВК и ЯндексРаботает из коробки.Рекомендуется только для тестирования. Не рекомендуется для использования на реальных (боевых) проектах.Как пользоваться:Установить приложение и на странице admin/?app=core&module=settings&controller=login добавить новые методы авторизации.На ВК и Яндексе укажите адрес, который вы видите в опции: The Redirect URI to useИз всех настроек можно менять толькоClient IdentifierClient Secret emailemail из черных списковОграничение возрастаА так же цвета и названия кнопок. Allow Admin CP logins итп.Ендпоинты и прочие идентификаторы сделаны редактируемыми на случай если ВК и Яндекс их поменяют. Такое было не раз у ВК. Сейчас их трогать не надо.Custom login handler 5.0.18.tarПишите сюда если нашли какие либо проблемы при работе приложения Edited 22 июняJun 22 by aplayer
25 июняJun 25 On 22.06.2026 at 20:06, aplayer said:Работает из коробки.При авторизации в публичной части - пустая страница после клика кнопки (на кнопке, кстати, нет текста):https://id.vk.ru/auth?app_id=54627367&client_id=54627367&device_id=&response_type=code&redirect_uri=https://site.ru/applications/clogin/interface/callback/oauthvk/&scope=email&sdk_type=vkid&lang_id=3&scheme=&oauth_version=2&redirect_state=25-aHR0cHM6Ly8pbnZpc2lvbmNvbW11bml0eS5ydS9sb2dpbi8-dd5255c8d3a060bb1f5338a8f7dcd8cd-aHR0cHM6Ly1pbnZpc2lvbmNvbW11bml0eS5ydQ&code_challenge=uhD7MZ3n1ELDbwdJ50o-L7GIoigwbc6LTimtXqf1nDY&code_challenge_method=sha256 Edited 25 июняJun 25 by Zero108
25 июняJun 25 Author на https://id.vk.ru/auth всегда есть хоть какой-то текст об ошибкеThe Redirect URI to use у вас указан в личном кабинете на ВК на https://id.vk.com/about/business/?не на старом https://dev.vk.com/ru/admin/apps-list, а на id.vk.comВ админке надо логи смотреть admin/?app=core&module=support&controller=systemLogsНу и еще если вы любите делать приложения без Developer Tools, то надо это дело устанавливать на чистый движок у которого все сторонние приложения сделаны в Developer Tools или отсутствуют вовсе.Но логи покажут более понятную картину
25 июняJun 25 2 часа назад, aplayer said:The Redirect URI to use у вас указан в личном кабинете на ВК на https://id.vk.com/about/business/?Уже не помню, так как снес ваше приложение. Помню, что указывал ваш callback - он вроде есть в ссылке, что я привел.До логов дело не дошло, так как после клика кнопки сразу белый экран по указанной выше ссылке. Попробуйте чистую установку своего приложения. Edited 25 июняJun 25 by Zero108
25 июняJun 25 Author еще одна из причин может быть впн или сайт на иностранном сервере. Сейчас это всё запрещено и блокируется самим ВК.1 час назад, Zero108 said:Попробуйте чистую установку своего приложения.у меня как раз для этого дела два разных сервера. На одном Developer Center на другом чистый IPS. На обоих всё работает.я сейчас попробовал ввести неверные данные и вот
25 июняJun 25 Да, работает без ВПН.На кнопке нет текста.Из мелочей: слишком много настроек для простого залогинивальщика. Строка handler_forgot_password_url_deschandler отображается не в виде текста. Edited 25 июняJun 25 by Zero108
25 июняJun 25 У меня почему-то моё приложение работает и через ВПН (Happ). Edited 25 июняJun 25 by Zero108
25 июняJun 25 ИИ пишет, что ваше приложение может быть скомпрометировано:Отсутствие PKCEVK ID не применяет PKCE принудительно на уровне сервера — только декларирует его как требование в документации.Механика: если запрос авторизации пришёл без code_challenge, VK выдаёт код без привязки к верификатору. При обмене кода на токен сервер не ожидает code_verifier — и просто выдаёт токен. Итог: функционально работает, но без той защиты, ради которой PKCE создавался.Это распространённая практика: OAuth-серверы добавляют поддержку PKCE, но из соображений обратной совместимости не ломают клиентов, которые PKCE не используют. VK — не исключение.Какие реальные проблемы возникают из-за отсутствия PKCE1. Authorization Code Interception (перехват кода авторизации)PKCE создавался именно для защиты от этой атаки. Если код (?code=...) окажется в:логах сервера / nginx / proxyзаголовке Referer браузераистории браузера (особенно при нестандартных redirectах)перехвате MITM на уровне сети— без PKCE его можно обменять на токен. С PKCE это невозможно без code_verifier, который известен только инициатору запроса.В контексте АЦП это критичнее: компрометация токена администратора VK-аккаунта потенциально позволяет привязать чужой VK-аккаунт к учётной записи администратора сайта.2. VK может включить принудительную проверкуЕсли VK решит начать отклонять запросы без code_challenge — "Custom login handler" перестанет работать без обновления. "VK.com Integration" устойчив к этому изменению.3. device_id игнорируетсяVK ID v2 возвращает device_id для привязки токена к устройству. Custom login handler его не обрабатывает — механизм защиты от кражи токена VK-стороны просто не работает.4. Вероятный скрытый риск: state-corruption на других установкахЕсли тест проходил на конкретной установке с коротким ACP URL — это повезло. На другой установке или после смены URL admin-панели та же цепочка может начать падать.Вывод: для небольшого форума с небольшим числом администраторов — приемлемый компромисс. Для высоконагруженного сайта или при повышенных требованиях к безопасности АЦП — риск обоснован. Главная практическая уязвимость не в отсутствии PKCE сейчас, а в том, что при изменении политики VK плагин просто перестанет работать без предупреждения. Edited 25 июняJun 25 by Zero108
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.