Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FIDO導入方法 / How To Build Capy FIDO

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

FIDO導入方法 / How To Build Capy FIDO

Avatar for Capy Japan Inc.

Capy Japan Inc.

June 22, 2020

More Decks by Capy Japan Inc.

Other Decks in Technology

Transcript

  1. on 1. e 2. a ID 3. 4. 5. 1

    P d hP/31A 3 .0?? h g 7. 3 cf =? 7 A 3? 0== 3 1 : = 0== ?31A 3 =0?? 72 & & - 2 72 cf =? = 0 5 5 3 1 : ? 3 0==? 23 07 ? 72 :3 10= A041 73 0 it hcg g jrmP S gus p y l
  2. 2 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Login UAF</title> <link

    href="./css/default.css" rel="stylesheet" type="text/css"> </head> <body> <div class="login"> <h1>Login UAF</h1> <form id="form1" method="post" action="reg.php"> <input type="text" name="username" maxlength="20"><br/> <input type="password" name="password" maxlength="20"> <input type="submit" name="signin" value="Signin"> <script type="text/javascript" src="https://fido.capy.me/v1/uaf/get_js"></script> </form> </div> </body> </html> , 1 , JavaScript.get_js
  3. i O COi N O 2 . O N p

    ri CJSOURL Capy u D I Capy S Service ID (Service ID O N PCapy u v I ) 3 p r e c p r example.com y O Secure Pass N C s v . O Pa c N I t a c N y N O p c r
  4. e 4 if ($_SERVER['REQUEST_METHOD'] == "POST") { if (!empty($_POST["user"])) {

    $service_id = "FIDO_XXX"; $username = $_POST['user']; $fbtoken = $_POST['fbtoken']; $url = "https://fido.capy.me/v1/uaf/inituaf"; var_dump($fbtoken); try { $client = new Client(["timeout" => 10, "stream" => false]); $param = ["form_params" => [ "serviceid" => $service_id, "username" => $username, "op" => "reg", "fbtoken" => $fbtoken, ] ]; $response = $client->post($url, $param); $result = $response->getBody(); var_dump($result); } catch (Exception $e) { echo $e; } } } ?> D 3. POST I user, fbtoken HTML JavaScript . D . /uaf/inituaf POST D op reg
  5. 5 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Login UAF</title> <link

    href="./css/default.css" rel="stylesheet" type="text/css"> </head> <body> <div class="login"> <h1>Login UAF</h1> <form id="form1" method="post" action="auth.php"> <input type="text" name="username" maxlength="20"><br/> <input type="submit" name="signin" value="Mobile Auth"> <script type="text/javascript" src="https://fido.capy.me/v1/uaf/get_js"></script> </form> </div> </body> </html> 4 JavaScript get_js. 4 4
  6. t a 6 if ($_SERVER['REQUEST_METHOD'] == "POST") { $service_id =

    "FIDO_XXX"; $url = "https://fido.capy.me/v1/uaf/"; $init_url = $url . "inituaf"; $check_url = $url . "userstatus"; if (!empty($_POST['user'])) { $username = $_POST['user']; session_start(); $_SESSION['username'] = $username; try { $client = new Client(["timeout" => 10, "stream" => false]); $param = ["form_params" => [ "serviceid" => $service_id, "username" => $username, "op" => "auth" ] ]; $response = $client->post($init_url, $param); $result = json_decode($response->getBody(), true); header("Location: login_check.php"); } catch (Exception $e) { echo $e; } } } a . POST user HTML JavaScript p h 4 D /uaf/inituaf POST D op auth $username p login_check.php I
  7. i en 7 <!doctype html> <head> <title>Login Processing...</title> <script src="https://code.jquery.com/jquery-3.3.1.js"

    integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <script> </script> </head> <body> <h1>Login Processing...</h1> <a href="./auth.php">Back</a> </body> 4 . 4 t P 4 rl a i f k a i hp i P / . hp i / . tP jQuery g jQuery g u _ P jQuery oc Psf S
  8. t 8 var count = 0; var timer; $(function ()

    { timer = setInterval("check_status()", 5000); }); function check_status() { $.ajax({ type: "POST", url: "login_check.php", data: {}, success: function (msg) { var result = msg["result"]; if ("ok" === result) { clearInterval(timer); location.href = "./resultok.php"; } count++; if (50 < count){ clearInterval(timer); location.href = "./resultnotok.php"; } } }); } 4) ) ). ( ( ) rn check_status sv k PHP S gJPOST h i JSON result _e J <ok a resultok.php h l opOK > c a resultnotok.php h
  9. v p 9 session_start(); $username = $_SESSION['username']; if ($_SERVER['REQUEST_METHOD'] ==

    "POST") { $service_id = "FIDO_XXX"; $url = "https://fido.capy.me/v1/uaf/userstatus"; try { $client = new Client(["timeout" => 10, "stream" => false]); $param = ["form_params" => [ "serviceid" => $service_id, "username" => $username, "op" => "auth" ] ]; $response = $client->post($url, $param); $result = json_decode($response->getBody(), true); $ajax_response = array("result" => "ng"); if ($result["statusCode"] == 1200) { $ajax_response["result"] = "ok"; } header("content-type: application/json; charset=utf-8"); echo json_encode($ajax_response); return; } catch (Exception $e) { echo $e; } } ?> 4. Ti T . DO . a T P DI $username auth.php J h l D P T nDO /uaf/userstatus kDIPOST T O g h JSON J result ec t To DO /uaf/userstatus g h J 1200 _ S result ec T ok DO I S 4. v r T S J O
  10. a 10 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Login UAF</title>

    <link href="./css/default.css" rel="stylesheet" type="text/css"> </head> <body> <div class="login"> <h1>Login UAF</h1> <form id="form1" method="post" action="dereg.php"> <input type="text" name="username" maxlength="20"><br/> <input type="submit" name="signin" value="Mobile Auth"> <script type="text/javascript" src="https://fido.capy.me/v1/uaf/get_js"></script> </form> </div> </body> 5 JavaScript . get_js 5 5
  11. h e 11 if ($_SERVER['REQUEST_METHOD'] == "POST") { $service_id =

    "FIDO_XXX"; $url = "https://fido.capy.me/v1/uaf/dereguser"; if (!empty($_POST['user'])) { $username = $_POST['user']; try { $client = new Client(["timeout" => 10, "stream" => false]); $param = ["form_params" => [ "serviceid" => $service_id, "username" => $username, ] ]; $response = $client->post($url, $param); $result = json_decode($response->getBody(), true); var_dump($result); } catch (Exception $e) { echo $e; } } } D . g 5 POST I user HTML JavaScript d D /uaf/dereguser 5POST D
  12. 13 S AI ( / AI J ( / AI

    J 1 1 1 P AI J P ) 1
  13. 14 a POST /v1/uaf/inituaf c application/x-www-form-urlencoded a P serviceid string

    Capy po ID username string ID (CapyAJS I A ) op string Asr "reg" Asr "auth"A2 A fbtoken - string Firebase A (CapyAJS I A ) trx - string "auth"A A A P (size max: 200) A A A A I a :I u I Pe S A A API
  14. e 15 P application/json T A statusCode string I Description

    string I p I n 1200 1400 C 1403 o 1404 1498 POST T : - 1500 T I
  15. T 17 : :A application/json C statusCode string : :

    Description string : : : : 1200 I P -1 I I - : :
  16. t e 19 P application/json T A statusCode string I

    Description string I o I p 1200 1400 C 1403 n 1404 n 1498 POST T : - 1500 T I