クライアントデーモンがクライアントボクサーに接続され、署名をチェックして結果を表示します。 デーモンはdstudと呼ばれます。
完成したアセンブリはppaにあります:ilya-muromec / dstud。
Signerbox自体はeusign.orgドメインでホストされ、カスタムOAuthのようなプロトコルで動作します。ページにアクセスするとリクエストを受信し、ユーザーにリクエストを承認する提案を表示し、完成した結果とともに送信します。
統合
signerbox / dstudを使用して本人確認をサイトに追加するには、次のものが必要です。
- ホストのppaからdstud-staticをインストールします。
add-apt-repository ppa:ilya-muromec / dstud apt-get update apt-get dstud-staticをインストール
- eusign.org/register_appでアプリケーションを登録し、app_idを取得します。
- Webサイトの統合プラグインをインストールするか、新しいプラグインを作成します
- プラグイン設定で受け取ったapp_idを指定します
ワードプレス
これで、ワークスペース用の既製のプラグインが手に入りました 。彼はgithub.com/themao/dstu-loginに住んでいます 。 アプリケーションを登録するとき、https://:domain / wp-login.phpの形式でauth_urlを指定する必要があります。 httpsスキームのアドレスのみが受け入れられます。
プラグインを設定すると、ログインページに「eUで署名」リンクが表示されます。
ライブデモはdstu.enodev.orgで入手できます。
@niggaslifeというニックネームの下に隠れているtwitterユーザーがプラグインの開発に参加しました。
仕組み
ユーザーは、キーと証明書を要求するフォームにリダイレクトされ、NONCEとドメインからの行に署名した後、公開キー(証明書)をサーバーにアップロードし、認証を開始するサイトにgetパラメーターの形式で署名を送信します。
署名はJSライブラリを使用してクライアント上で作成されるため、秘密鍵はマシンを離れません。
署名はdstudデーモンによってチェックされるため、統合サイトはサインボックスを信頼する必要はありません。
認証
電子署名に関するウクライナの法律によると、認定または合格したソフトウェアレビューによって作成された署名は法的に重要です。 Signerboxおよび使用されているライブラリは認証または試験に合格しなかったため、訴訟の場合、ユーザーと個人の関係を証明するためにギャップが生じることがあります。 これがあなたにとって重要な場合-プロジェクトの認定を手伝うか、弁護士に相談してください。
プラグイン開発
統合プラグインの作成は非常に簡単です。 これを行うには、次のようなことをする必要があります。
- ログインフォームにeusign.org/authへのリンクを表示します:app_id?state =:app_state
- GETパラメータsign、nonce、cert_idを読み取る認証URLハンドラを追加します
- eusign.org/api/1/certificatesから証明書をダウンロードします。cert_id
- フォームパラメータデータ形式:nonce |:auth_url
- localhostに POSTリクエストを送信します:8013 / api / 0 / c(受信した証明書)、d(データパラメーター)、s(署名パラメーター)の3つのパラメーターで確認します。
- 200 OKと答えたら、結果を一連の行key = valueとして解析してユーザーを作成するか、既存のユーザーを見つけます
フィールド1.2.804.2.1.1.1.11.1.4.1.1には、税ユーザーID(TIN)が含まれます。 このフィールドにはユーザーに関する特定の個人情報が含まれており、合成識別子ではないため、純粋な形式ではなく、塩を含むハッシュを使用することをお勧めします。
認証中に指定された状態パラメーターの内容は任意で、auth_urlに変更せずに返されます。 CSRFから保護するために、ワンタイムトークンを指定することをお勧めします。
テスト証明書
開発を容易にするために、テスト証明書とキー(user.cerおよびuser.key)はdstudデーモンとともに配布されます。 テスト証明書を使用してログオンを有効にするには、dstudデーモンを停止し、testCAディレクトリから実行する必要があります。
テスト証明書には、フィールド1.2.804.2.1.1.1.11.1.4.1.1が含まれていません。