oauth2-client(PHP)に基づいたESIAとの統合







ESIAを使用したさらに別のPHP統合パッケージekapusta/oauth2-esia



ます。 人気のleague/oauth2-client



へのアダプターとして実装されleague/oauth2-client









組織の瞬間



ESIAとの統合は、政府機関、金融および保険会社、信用機関(銀行、マイクロファイナンス)、公共のwi-fiを備えた組織、および政府が将来グリーンライトを与えるその他の組織に影響を与えます。 主な構成アイテムは、「 ESIA 」のリクエストによりHabréで説明されていますドキュメントの現在のバージョンはで入手できます ウェブサイト 、サポートはesia@minsvyaz.ruを通じて比較的合理的な時間で取得できます。







このパッケージはなぜですか?



ビルドステータス カバレッジステータス ソフトウェアライセンス









コードを見せてください!



構成可能



 use Ekapusta\OAuth2Esia\Provider\EsiaProvider; use Ekapusta\OAuth2Esia\Security\Signer\OpensslPkcs7; $provider = new EsiaProvider([ 'clientId' => 'XXXXXX', // ""    'redirectUri' => 'https://your-system.domain/auth/finish/', 'defaultScopes' => ['openid', 'fullname', '...'], //     //       // 'remoteUrl' => 'https://esia-portal1.test.gosuslugi.ru', // 'remoteCertificatePath' => EsiaProvider::RESOURCES.'esia.test.cer', ], [ 'signer' => new OpensslPkcs7('/path/to/public/certificate.cer', '/path/to/private.key') ]);
      
      





使用する署名者





訪問者をESIAにリダイレクトする



同時に、後で確認できるように状態を保存します。







 // -  https://your-system.domain/auth/start/ $authUrl = $provider->getAuthorizationUrl(); $_SESSION['oauth2.esia.state'] = $provider->getState(); header('Location: '.$authUrl); exit;
      
      





ユーザーデータを取得する



状態を確認し、コードを認証トークンに変更します。







 // -  https://your-system.domain/auth/finish/?state=...&code=... if ($_SESSION['oauth2.esia.state'] !== $_GET['state']) { exit('The guard unravels the crossword.'); } $token = $provider->getAccessToken('authorization_code', ['code' => $_GET['code']]); $esiaPersonData = $provider->getResourceOwner($accessToken); var_export($esiaPersonData->toArray());
      
      





トークンを更新する方法は?



oauth2-clientのドキュメントに記載されている標準







ご清聴ありがとうございました。



このパッケージは、私が働いているフィンテック社が監督しています。 動物でテストされていません。







UPD1



ボーナスはsymfony-bundle ekapusta/oauth2-esia-bundle



です:










All Articles