
 ESIAを使用したさらに別のPHP統合パッケージekapusta/oauth2-esia
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ます。 人気のleague/oauth2-client
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    へのアダプターとして実装されleague/oauth2-client
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     。 
組織の瞬間
ESIAとの統合は、政府機関、金融および保険会社、信用機関(銀行、マイクロファイナンス)、公共のwi-fiを備えた組織、および政府が将来グリーンライトを与えるその他の組織に影響を与えます。 主な構成アイテムは、「 ESIA 」のリクエストによりHabréで説明されています。ドキュメントの現在のバージョンはで入手できます。 ウェブサイト 、サポートはesia@minsvyaz.ruを通じて比較的合理的な時間で取得できます。
このパッケージはなぜですか?
-  市民の基本データと埋め込みデータの取得は、ESIAで利用可能なembeds
 
 
 
 使用した1つのリクエストで行われます。 つまり 連絡先/アドレスを取得するために、さらにN個のリクエストを行う必要はありません。
- リクエストに署名するための2つのオプション:CLI経由と組み込みPHP関数経由。 これにより、RSAとGOST'uで作業できます。 CLIサブスクライバーには、一時ディレクトリーは必要ありません。
- アクセストークンの署名は、ESIA公開キーによって検証されます。
-  これは、テスト対象のleague/oauth2-client
 
 
 
 に基づいており、自転車を再発明することなくアダプターであり、それ自体がテストで100%カバーされています。
- テストには統合要素があります-実際のテストスタンドに行く認証ボット。 ヘッドレスクロムのおかげ。
-  状態の生成とJWTトークンの解析では、特別に書かれたパッケージlcobucci/jwt
 
 
 
 ramsey/uuid
 
 
 
 およびlcobucci/jwt
 
 
 
 ます。
-   PHP ^ 5.6 || ^ 7.0
 
 
 
 との互換性^ 5.6 || ^ 7.0
 
 
 
 ^ 5.6 || ^ 7.0
 
 
 
 
コードを見せてください!
構成可能
 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') ]);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      使用する署名者
-   RSAキーを使用する場合、 OpensslPkcs7
 
 
 
 十分です。
-   GOSTキーとGOST暗号を使用してコンパイルされたPHPを使用する場合、 OpensslPkcs7
 
 
 
 十分です。
-   GOSTキーを使用し、openssl互換ツールを使用している場合は、 OpensslCli
 
 
 
 使用しOpensslCli
 
 
 
 。 ツールパスパラメーターがあります。
-   GOSTキーとドッカーファンを使用する場合、パラメーター'toolpath' => 'docker run --rm -i -v $(pwd):$(pwd) -w $(pwd) rnix/openssl-gost openssl'
 
 
 
 OpensslCli
 
 
 
 'toolpath' => 'docker run --rm -i -v $(pwd):$(pwd) -w $(pwd) rnix/openssl-gost openssl'
 
 
 
 OpensslCli
 
 
 
 でOpensslCli
 
 
 
 を使用できます'toolpath' => 'docker run --rm -i -v $(pwd):$(pwd) -w $(pwd) rnix/openssl-gost openssl'
 
 
 
 
訪問者を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
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    です: 
-   php: ^5.6 || ^7.0
 
 
 
 ^5.6 || ^7.0
 
 
 
 
-   symfony: ^2.8 || ^3 || ^4
 
 
 
 ^2.8 || ^3 || ^4
 
 
 
 ^2.8 || ^3 || ^4
 
 
 
 。
