オープンソース

FIDOパスワードレス認証をKeycloakで実現する方法

様々なシステムを利用する中で、現在ではID/パスワードを使ってユーザ認証をするシステムが大半を占めています。自身で管理するIDやパスワードが増えることで、ユーザは、管理をしやすくするためにパスワードを簡単な文字列にしたり、パスワードの使いまわしをしてしまう可能性があります。その結果、パスワードが漏えいしてしまう危険性が高くなり、不正アクセス被害の原因となります。今回は、不正アクセスの対策にもなる、Keycloakでパスワードを使わずに認証を可能にするパスワードレス認証を紹介します。

パスワードレスの認証方式とは

パスワードレス認証とは、パスワード以外の、生体認証や所持認証等の情報を利用してシステムにログインを行う認証方式で、多要素認証(MFA)の一種です。パスワードを使う認証では、ユーザは複数のパスワードを管理する必要がありましたが、生体認証と言われている身体的または行動的特徴を組み合わせる方式で本人確認を行えば、パスワードを覚えておく負担がなくなり、利便性が向上します。また、パスワードを第三者に不正利用されてしまうリスクもないため、セキュリティ対策の強化の点でもメリットがあります。そのため、従来のパスワードによる認証に代わる新しい認証方式として、さまざまなサービスでパスワードレス認証は普及しつつあります。最近では、Windows PCやiPhoneなどでパスワードレス認証を利用するケースが広がってきています。

パスワードレス認証には、代表的な2つの認証方式があります。以下では、その2つの認証方式である、FIDO認証とPasskey(パスキー)の仕組みを紹介します。

FIDO認証

FIDO認証とは、「Fast Identity Online」の略称で、パスワードレス認証のデファクトスタンダードになりつつある認証方式です。FIDO認証ではパスワードを使わず、主に生体認証を用いた認証を行います。FIDOは、FIDOアライアンスという団体によって策定されています。FIDOアライアンスは、オンライン認証とパスワードの代替となるセキュリティ技術の標準化を促進する団体です。この団体のメンバーには、GoogleやApple、Amazon、Meta、Intelなど、世界的な企業が多数在籍することから、この団体で決定されたことは、世界中のシステム・サービスに大きな影響を与えています。

FIDO認証では、指紋や顔認証などの生体認証を用いることでパスワードが不要になります。さらにFIDO認証は、生体認証の情報をネットワーク上に流さない仕組みになっています。

FIDO認証の仕組み

FIDO認証の仕組み

FIDO認証の仕組み

FIDO認証では、システムやサービスにユーザがログインする際、サーバーからの認証要求に対し、ユーザ本人であることを証明する署名を返すことで認証を行います。その前提として、初回認証時に、ユーザのデバイス内に保管される秘密鍵と、サーバー内に保管される公開鍵の、二種類の鍵を生成します。その後の仕様は、上の図の通り、次のようになります。

  1. ユーザがシステムやサービスにログイン
  2. 認証システムがスマホ等デバイスに認証トークンを要求
  3. デバイスがトークン作成のための認証を開始
  4. 予め登録された生体認証方法で、ユーザとデバイス間の認証を行う
  5. 生体認証情報によって秘密鍵にアクセス
  6. 秘密鍵によって署名された認証トークンが、認証システムへ安全に送信される
  7. トークンを受け取った認証システムが、公開鍵とペアになる秘密鍵を確認することで署名を検証し、ログインを許可

この方法では、ユーザと生体認証装置の間でやり取りが完了し、生体認証の情報がネットワークに流されないため、ネットワーク傍受による漏洩の心配がありません。なお、秘密鍵・公開鍵のやりとりについては、システム間で自動的に行われます。ユーザは、初回登録後に生体認証でログインを行うだけで、簡単にシステムやサービスの利用が可能になります。

FIDOには規格のバージョンがあり、現在はFIDO2が主流となっています。FIDO2は、WebAuthnとCTAPと呼ばれる技術を採用しています。

WebAuthn

WebAuthnとは、WEBアプリケーションで認証(Authentication)を行うための規格です。主にWEBブラウザとアプリケーションのための規格であり、WebAuthnのAPIを実装したブラウザでは、生体認証器を利用した認証を行うことができます。この規格は既に標準化が終わり、ChromeやEdge、Safariなどのブラウザで実装されています。

CTAP

CTAP(Client To Authenticator Protocol)とは、パソコンなどのクライアント端末と、生体認証器(スマートフォンやUSB 機器等)の間での情報のやりとりを行うための規格です。この標準規格が策定されたことにより、多くのデバイスと生体認証器の間での認証処理が可能になりました。

Passkey(パスキー)

上記で紹介したFIDO2にも、利用する上でデメリットがあります。それは、生体認証器の入れ替え時に、すべてのサービスに対して認証情報を再登録しなければならない、という問題です。これを解決するために、MicrosoftやGoogle、Appleが主導して展開しているのがPasskey(パスキー)です。Passkeyとは、複数の生体認証器で認証情報を同期する技術をいいます。Passkeyを使用すると、Googleアカウントなど各企業のサービスにPasskeyに関する情報(秘密鍵)が保存され、アカウントが同一のスマホ・タブレット・PCなどの端末であれば、同一の秘密鍵が利用できるようになります。

Passkeyを利用した認証

Passkeyを利用した認証

例として、GoogleアカウントでPasskeyを有効にした場合、上記のようなQRコードが表示されます。このQRコードをスマホなどの生体認証器で読み取ると、指紋認証などユーザーの本人認証を求められ、認証処理が開始される形になります。

なお、Passkeyは、FIDOアライアンスで定義されたわけではなく、一部の大企業によって主導されている技術です。影響力の大きい大手の企業が、認証方式のブランド名として利用していますが、標準化された規格ではありません。

FIDO認証をkeycloakへ実装する方法

OSSのKeycloakもWebAuthnに対応しているため、FIDO認証を実装したパスワードレス認証の仕組みを作ることができます。Keycloakで、WebAuthnを動作させるためには、HTTPSでのアクセスが必須となります。Keycloakでは、パスワード認証とWebAuthn認証のどちらかを選択できるようにすることや、新規ユーザを作成した際に、必ずWebauthnの認証情報作成を求めることができます。

KeycloakでのFIDO認証

KeycloakでのFIDO認証

KeycloakにFIDO認証の設定をすることで、上記のようにパスキーの作成方法の選択画面が表示されます。QRコードを表示させ、スマートフォンなどで読み込むことで以下の画面が表示されます。

QRの作成画面

QRの作成画面

スマートフォンの操作例1

スマートフォンの操作例2

スマートフォンの操作例

QRコードを読み込んだスマートフォン側では、指紋認証等の生体認証が要求されます。認証に成功すると、次のようにスマートフォンとPC-WEBブラウザとの通信が開始され、システムへのログインが可能となります。

現状、デージーネットで検証したAndroid端末では、Wifiやモバイル通信をOFFにすると認証に失敗するため、上記の方法はネットワーク的に閉鎖された環境では利用できません。グローバルネットワークに繋がる環境での利用は問題ありませんが、閉鎖環境ではUSBキーなどを利用した別の方法での認証が必要になります。

Keycloak「情報の一覧」

パスワードレス認証調査報告書

パスワードレス認証調査報告書

パスワードレス認証とは、パスワード以外の方法で認証を行うことを言います。本書は、パスワードレス認証方式のであるFIDO2 やPasskeyについて調査した内容をまとめたものです。

Keycloak調査報告書

Keycloak調査報告書

Keycloakは、シングルサインオンを実現するための認証プロバイダです。本調査報告書では、インストール方法や詳しい使い方、Rocket.chatとApache HTTP Serverのoidcモジュールとの連携方法を調査した結果を解説しています。

Keycloakサービス連携調査報告書

Keycloak調査報告書

Keycloakを用いて、複数のアプリケーション・サービスのシングルサインオンを実現するための手順の調査報告書です。

KeycloakによるKerberos認証調査報告書

KeycloakによるKerberos認証調査報告書

本書では、シングルサインオンを提供するサーバとしてKeycloakを使用し、Kerberos認証によりユーザ名やパスワードの入力なしでウェブサービスにログインできるようにする手順を記述します。

LDAPサーバ管理UI調査報告書

LDAPサーバ管理UI調査報告書

LDAPとは、ディレクトリサービスのための標準プロトコルです。LDAPを使い、ディレクトリサービスを提供するソフトウェアやシステムを、LDAPサーバと呼びます。本書は、OSSのLDAPサーバの管理UIの現状についてまとめたものです。

Keycloakを利用したシングルサインオン認証サーバの導入事例

Keycloak構築事例

お客様は、システムごとにアカウントを管理していたため、管理者だけでなくユーザにも管理の手間がかかっていました。この記事は、弊社でOSSのKeycloakを利用したシングルサインオン(SSO)システムを導入した事例です。

管理の負担を軽減したKeycloakによるシングルサインオンサーバ構築事例

Keycloakシングルサインオンサーバ構築事例

医療サービスを提供しているお客様に、Keycloakを利用した認証システムを導入しました。お客様は、従業員が利用するポータルサイトやeラーニングシステムなど複数のシステムを利用していました。しかし、従業員の入れ替わりが激しく、IdaaS等の従量課金制のサービスでは、費用面で導入が難しいという課題がありました。そこで、OSSのKeycloakを利用したシングルサインオンサーバを導入しました。

多要素認証にTOTPを利用したKeycloakサーバ導入事例

多要素認証にTOTPを利用した導入事例

今回は、シングルサインオンのKeycloakに多要素認証を導入した事例です。お客様は、ID/パスワード管理だけではセキュリティ面で不安ということで、多要素認証の導入を検討していました。

シングルサインオン(SSO)を構築するおすすめOSSとIDaaSの機能比較

シングルサインオンを構築するおすすめOSSとIDaaSの機能比較の画像

クラウド上のサービスを利用する機会が増加したことにより、最近になってシングルサインオンが再注目されています。この記事では、主な選定のポイントについてまとめ、解説します。

シングルサインオンの仕組みと選び方

シングルサインオンの仕組みと選び方の画像

ここでは、シングルサインオンの仕組みを説明し、シングルサインオンを実現するためにソフトウェアやサービスを選定する時の選び方と検討のポイントについて説明します。

LDAPデータ管理のOSS比較 7選

LDAPデータ管理のOSS比較画像

LDAPサーバは、企業内では特にユーザ情報の管理や認証の基盤として使用されています。ここでは、LDAPサーバのデータを管理するためのOSSを紹介します。

注目の顔認証で認証の課題を解決〜FaceAuth〜

FaceAuthの画像

FaceAuthは、顔認証に対応していないサービスでも導入できる顔認証のソフトウェアです。このページでは、顔認証システムの導入におすすめのソフトウェアFaceAuthについて紹介します。

OpenAM〜シングルサインオン〜

OpenAMの画像

OpenAMとは、シングルサインオン(SSO)を実現するためのソフトウェアです。現在のOpenAMはオープンソースとして提供されていませんが、いくつかの商用サポートベンダーによって、OpenAMの公開とサポートは継続されています。

デモのお申込み

もっと使い方が知りたい方へ
Keycloakの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Keycloakのデモをご希望の方は、下記よりお申込みいただけます。

デモをご希望の方

デモの申し込みイメージ


OSS情報

Keycloak〜SAMLにも対応したシングルサインオン〜
Keycloakは、複数のサービスへのサインインを一度で行うことができるOSSです。ここでは特徴や機能について紹介します。
KeyclockのLDAPデータ管理
Keycloakは、シングルサインオンの認証バックエンドとしてLDAPを利用することができます。ここでは、KeycloakのLDAPデータ管理を紹介します。
FIDOパスワードレス認証をKeycloakで実現する方法
パスワードレス認証とは、パスワード以外の情報を利用してシステムにログインを行う認証方式です。ここでは、Keycloakで実現するパスワードレス認証を紹介します。

FIDOパスワードレス認証をKeycloakで実現する方法の先頭へ