2017-02-04 6 views
0

perl 웹 응용 프로그램 (mojolicious 사용)에서 이중 인증을 설정하고 있습니다. 나는 perl을 처음 사용하기 때문에 이것은 간단한 대답 일 수있다.Perl (Mojolicious)을 사용하여 URL에 POST 할 때 인수를 얻는 방법

다음을 수행하여 응답을 확인해야한다는 것을 제외하고는 모든 설정이 완료되었습니다. "사용자가 인증 한 후 (예 : 전화 통화, SMS 암호 코드 등) IFRAME은 sig_response 및 POST라는 서명 된 응답을 생성합니다 post_action URL로 돌아 간다. 서버 측 코드는 verify_response()를 호출하여 서명 된 응답이 합법적인지 확인해야한다. "

perl에서 어떻게 sig_response를 호출 할 수 있습니까? 모듈이 있습니까? 그것은이 sig_response과 같은 https://duo.com/docs/duoweb

답변

1

는 응답 핸들러에 게시 그냥 값이다 : 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를 살펴 보았습니다.

+0

관련있는 CPAN의 https://metacpan.org/pod/Net::Duo 모듈도 있지만 공식은 아닙니다. 나는 그것이 무엇을하는지 익숙하지 않기 때문에 그것이 무엇을하는지 모른다. – simbabque