beeralex / beeralex.oauth2
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:bitrix-module
pkg:composer/beeralex/beeralex.oauth2
Requires
- php: ^8.1
- beeralex/beeralex.core: *
- league/oauth2-server: *
README
добавьте в composer.json экстра опцию, чтобы композер поставил пакет в local/modules
"extra": { "installer-paths": { "local/modules/{$name}/": ["type:bitrix-module"] } }
Необходимо выполнить команду composer require beeralex/beeralex.oauth2
,
и выполнить установку модуля в Bitrix через админку (сначала должен быть установлен beeralex.core).
Конфигурация
Для начала необходимо сгенерировать публичный и приватный ключи:
openssl genpkey -algorithm RSA -out private.key openssl rsa -pubout -in private.key -out public.key
и ключ шифрования:
php -r 'echo base64_encode(random_bytes(32)), PHP_EOL;'
Далее в один из файлов конфигурации (.settings.php
, .settings_extra.php
) добавьте следующие настройки:
return [ ... 'beeralex.oauth2' => [ 'value' => [ 'private_key' => '/path/to/private.key', // здесь абсолютный путь 'public_key' => '/path/to/public.key', // здесь абсолютный путь 'private_key_passphrase' => null, 'encryption_key' => 'lxZFUEsBCJ2Yb14IF2ygAHI5N4+ZAUXXaSeeJm6+twsUmIen', // ключ шифрования ] ], ... ]
В конце добавьте роуты routes/oauth.php
из модуля, в свой outes/web.php
:
Scopes
Для работы со скоупами доступа к API необходимо подписаться на событие OnScopesLoad
:
use Bitrix\Main; Main\EventManager::getInstance()->addEventHandler( 'beeralex.oauth2', 'OnScopesLoad', static function (Main\Event $event): Main\EventResult { return new Main\EventResult(Main\EventResult::SUCCESS, [ 'read' => 'Read site data', 'write' => 'Write site data', ]); } );
Создание клиентов
для добавления клиентов перейдите в админку, вкладка сервисы и в меню найдите OAuth2
и добавьте клиента.
Примеры запросов
Для авторизации по типу client_credentials достаточно передать 3 параметра:
- grant_type = “client_credentials”
- client_id – клиент id из таблицы yngc0der_oauth2server_clients
- client_secret – не захешированный client_secret из yngc0der_oauth2server_clients
Для авторизации по типу password нужно дополнительно передать еще два параметра:
- Здесь grant_type = “password”
- client_id
- client_secret
- username – это LOGIN пользователя из таблицы bitrix (Bitrix\Main\UserTable)
- password – так же незахешированный пароль пользователя из таблицы bitrix
Authorization code grant
POST https://my.site.com/oauth/token
{ "grant_type": "authorization_code", "code": "def5020018a310a188e28c17e1437fb8018bba5a32dd8d85ed9af40a761e40820353f21491b7382a2210d517acdf2987f8c01c3c0d8bc1853b26b90b1aa3df93b0d220b27b19b8593b1ae58bd5542ff224211bd729b8d80af4adb2e092e44c44e05d2c2856f062cb52f015583c1260e789e352c4e3f210b3026319cc0f8e46b4e1af1865a6d95b91ab02350d8ee2e416a95ea8b156b77b847a0ee0e4702ebbdec9ad4ce5397c8187be1e2c8c7f413f51f05274558e150c4cd4d9fa5c509a4d37f0c55a7291627ad3979932f0561645c5848a8497c65208563f6d2ef3fd91cad922ab6055998e33669d9874857a2bf64a9d802f0f84949c83dcc9fb20358ba9ca66ee4769c15d479283b75c711f4b26bb86775f5b01f9dc60bed43f8b1ddf4d64a2f371109a258070b68271b91294543f25b64d726c5e515143755bfcf1653e25727675821e7d6f8d250c97c4dad3a0e068bc9a8677dd71d143d682465544af170c44d1bf0ef23ee74b8c696a82516dcfebb30ae1ffd210c2e2acb35fc3a32f3ef7ced4a81431fa58ee774845205a7fdff3f907d7d83b553bd2079598c78ec5cf7af46d51e98589e70b2044868adb", "code_verifier": "jWJS7olsI78LF-hcNHO1QBMqVX06iN5Z837vD6UXO3g", "redirect_uri": "https://client.site.com", "client_id": "00112233-4455-6677-8899-aabbccddeeff" }
проверка private.key
используйте метод Beeralex\Oauth2\PrivateKeyChecker::check
для проверки правильности установки ключа.