はあなたの応答ハンドラにPOSTちょうど値である: sig_response = self.get_argument("sig_response") # for example (if using Tornado: http://www.tornadoweb.org/en/stable/documentation.html)
デュオウェブ:下記のパイソンを使用した例です。 iframeに表示するURLを作成したときは、post_action
というパラメータがありました。それはiframeから戻るユーザーを処理するアプリケーションのエンドポイントです。
モジョで経路を構築する必要があります。そこでは、POST本体で受け取っているパラメータを調べる必要があります。 JSONのようなフォームデータなのかどうかわかりません。それは実際にはドキュメントでは言いません。パラメータをダンプすることをお勧めします。それが表示されない場合は、リクエスト本文全体をダンプします。
sig_response
パラメータを取得したら、デュオのライブラリが提供するthe verify_response
functionに電話して戻り値を確認する必要があります。
まだ行っていない場合は、SDKをhttps://github.com/duosecurity/duo_perlにしてください。完全な配布ではありません。全体をクローンするか、または自分のgithubからpmファイルをダウンロードし、アプリケーションのlib
ディレクトリに入れてください。その後use
あなたは他のどのモジュールも好きです。何もエクスポートしないので、完全修飾名を使用してverify_response
関数を呼び出す必要があります。
全体のものは、この未テストコードのようなものになります。
post '/duo_handler' => sub {
my $c = shift;
my $sig_request = $c->param('sig_response');
my $user = DuoWeb::verify_response($ikey, $skey, $akey, $sig_request);
if ($user) {
# logged in
} else {
# not logged in
}
};
免責事項:私は、このサービスを知りません。私はあなたがリンクしたドキュメントを素早く読んだだけで、彼らがCPANに本当に置くべきPerl SDKを見ました。
モジュールhttps://metacpan.org/pod/Net::Duo on CPANも関連していますが、公式ではありません。私はそれが何をしているのか分かりません。 – simbabque