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です:




Source: https://habr.com/ru/post/J358834/


All Articles