JSP_Blog

ジェイエスピー社員が綴る日替わりブログ

パスワードレス認証に触れてみる

2024-03-14 11:48:11 | 日記
 パスワードレス認証をうたうWEBサービスが徐々に増えてきているようです。

 数年前より「FIDO2」や「WebAuthn」なる認証技術に関する記事を目にするようになり、IPAの情報処理技術者試験でも出題されるようになっていました。

 WEB+データベースの技術者の端くれと自認する私としても、そろそろこのパスワードレス認証というものをどのように実装するのか、注意点は何かを自分の目で確かめようと思いました。

 パスワードレス認証についての概要説明は、以下のサイトがわかりやすかったです。

■パスワード不要の認証「WebAuthn」とは?「FIDO」の構成技術を解説
https://www.nri-secure.co.jp/blog/what-is-webauthn

■次世代の認証技術 WebAuthnを紹介
https://www.nri-digital.jp/tech/20230124-12533/

 例えば、WEBサービスを使う際、ユーザーIDとパスワードを入力してログインする仕組みが一般的になっています。
 「WebAuthn」に対応しているサイトであれば、そのWEBサービスにログインする機器(パソコンやスマートフォン)情報をそのサイトと機器に予め登録しておき、いざログインするときは、その機器に対して指紋認証(やPIN認証)で本人確認を行い、本人確認できればWEBサイトへログインできる、といった流れになります。

 これを簡単にお試しできるサイトが以下です。

■WebAuthn.io
https://webauthn.io/

 このサイトでは、まず個人を一意に特定してもらうためのIDに相当する文字列を「example_username」のテキストボックスに入力し、「Register」ボタンを押します。(このIDは24時間で自動削除されます...手動削除もできます)
 そうすると、ブラウザ機能により、パスキーで認証する方法を選択する画面が表示されます。
 ここで、スマートフォンで指紋認証機能がついていれば、AndroidかiOSによる方式を選択すればよいでしょう。
 Windowsパソコンでは、Winodws Hellowによる指紋認証やPIN認証を選択する手もあります。
 選択すれば、「Success! Now try to authenticate...」と表示されます。
 これで、このWEBサービスにログインする機器情報をそのサイトと機器に登録したことになります。
 次に、登録した手段でログインできることを、「example_username」のテキストボックスに入力した文字列のまま「Authenticate」ボタンを押すと、ブラウザより、先ほど選択した手段での認証を要求されますので、それに従って認証すると「You're logged in!」とメッセージが表示されます。

 PIN認証を選択していると、結局その端末のPIN情報をログインの都度入力する必要がありますので、これをパスワード不要といっていいのかは微妙なところです....
 指紋認証でも、毎回指紋をあてがう必要もあります。
 ですので、手間が劇的になくなる!というわけではないですね。
 端末に保存される認証情報も、Microsoft・Google・Appleなどのサービスをうまく使ってバックアップ・共有しておかないと、移行が面倒というのもあります。従来のIDとパスワードであればどの端末からでもログインできますが、公共施設等の端末を使おうとするとなかなか難しいところがあります。

 さて、ではこのようなサイトを実際にどのように実装するのか。
 WEBサービスを実装する言語は色々あり、その言語ごとに「WebAuthn」を実装するライブラリやフレームワークがすでに出回っているようです。
 私の今の興味の中心は「Rust」ですので、「WebAuthn Rust」でググって最上位にヒットしたライブラリは以下でした。

■Github webauthn-rs
https://github.com/kanidm/webauthn-rs

 このライブラリにはデモやチュートリアルがついています。

https://github.com/kanidm/webauthn-rs/tree/master/tutorial

 チュートリアルをローカル端末にダウンロードし、rustの実行環境で説明のとおり make を実行すると、その実行環境にてWEBサービスが起動しました。
 上述の「WebAuthn.io」と同様のIDを入力するテキストボックスだけが表示されたWEBページにアクセスし、あとはパスキーの認証方法の選択・登録や、実際に認証できることを表す画面が表示されるようになっています。
 このライブラリを使っているソースコードもざっと見たところ、構造はそれほど難しくはなさそうでした。
 ただ、クライアント(JavaScript)とサーバ(Rust)の両方の理解が必要ですので、ボリュームはそれなりにありました。

 ということで、パスワードレス認証の使用と実装の感覚が、ざっくりつかめました。
 いい勉強になりましたね。

(酒)
moni-meter
  脱・手書き!点検データをデジタル化して誤検針削減
  ローコストで導入しやすい設備点検支援システム

moni-stock
  一括スキャンで入出庫・棚卸作業にかかる時間を短縮
  お客様も現場も笑顔にする在庫管理システム

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(moniシリーズ)、それに農業も手がけるIT企業

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 荷造りのすゝめ | トップ | よくできました!の季節 »
最新の画像もっと見る

コメントを投稿

日記」カテゴリの最新記事