beta / bx.openid
Bitrix openid client
1.3.1
2025-05-15 13:20 UTC
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/psr7: ^1.0|^2.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Установка
composer require beta/bx.openid
Для регистрации нового клиента авторизации необходимо в local/php_interface/init.php прописать след. код:
use Bitrix\Main\EventManager; use Bx\OpenId\SocServOpenId; $eventManager = EventManager::getInstance(); $adfsSocService = SocServOpenId::createNewService( // динамическое создание клиента 'adfs', // идентификатор клиента авторизации 'ADFS (My company)', // название клиента выводимое в списке 'adfs-icon' // код класса для вывода иконки клиента в админке ); $adfsSocService::selfRegister($eventManager); // регистрация клиента авторизации
После чего в админке (/bitrix/admin/settings.php?lang=ru&mid=socialservices&mid_menu=1) можно настроить клиент авторизации:
Помимо динамического создания клиента есть возможность описать свой класс:
use Bx\OpenId\SocServOpenId; use Bx\OpenId\interfaces\SocServOpenIdHandlerInterface; class SocServAdfs extends SocServOpenId { private static ?SocServOpenIdHandlerInterface $handler = null; static public function getId(): string { return 'adfs'; } static public function getName(): string { return 'ADFS (My company)'; } static public function getIconCode(): string { return 'adfs-icon'; } static public function getHandler(): ?SocServOpenIdHandlerInterface { return static::$handler; } static public function setHandler(SocServOpenIdHandlerInterface $handler): void { static::$handler = $handler; } } // регистрация клента авторизации $eventManager = EventManager::getInstance(); SocServAdfs::selfRegister($eventManager);
При необходимости можно изменить поведение клиента авторизации через внедрение обработчика.
Пример описания обработчика:
use Bx\OpenId\BaseSocServiceHandler; class CustomSocServiceHandler extends BaseSocServiceHandler { public function getAuthorizeCode(SocServOpenId $socServOpenId, ?HttpRequest $request = null): ?string { $request = $request ?? Context::getCurrent()->getRequest(); $code = $request->get('custom_code_field') ?: null; return $code === null ? null : (string) $code; } public function getIdToken(SocServOpenId $socServOpenId, ?HttpRequest $request = null): ?string { $request = $request ?? Context::getCurrent()->getRequest(); $code = $request->get('custom_id_token_field') ?: null; return $code === null ? null : (string) $code; } }
Регистрация клиента авторизации с обработчиком:
$handler = new CustomSocServiceHandler(); SocServAdfs::setHandler($handler); $eventManager = EventManager::getInstance(); SocServAdfs::selfRegister($eventManager);

