-
サーバ構築のデージーネットTOP
-
OSS情報
-
OSS紹介
-
Keycloak〜シングルサインオンを実現する注目のOSS〜
-
FIDOパスワードレス認証をKeycloakで実現する方法
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には規格のバージョンがあり、現在は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を利用した認証
例として、GoogleアカウントでPasskeyを有効にした場合、上記のようなQRコードが表示されます。このQRコードをスマホなどの生体認証器で読み取ると、指紋認証などユーザーの本人認証を求められ、認証処理が開始される形になります。
なお、Passkeyは、FIDOアライアンスで定義されたわけではなく、一部の大企業によって主導されている技術です。影響力の大きい大手の企業が、認証方式のブランド名として利用していますが、標準化された規格ではありません。
「パスワードレス認証調査報告書」へ
FIDO認証をkeycloakへ実装する方法
OSSのKeycloakもWebAuthnに対応しているため、FIDO認証を実装したパスワードレス認証の仕組みを作ることができます。Keycloakで、WebAuthnを動作させるためには、HTTPSでのアクセスが必須となります。Keycloakでは、パスワード認証とWebAuthn認証のどちらかを選択できるようにすることや、新規ユーザを作成した際に、必ずWebauthnの認証情報作成を求めることができます。
KeycloakでのFIDO認証
KeycloakにFIDO認証の設定をすることで、上記のようにパスキーの作成方法の選択画面が表示されます。QRコードを表示させ、スマートフォンなどで読み込むことで以下の画面が表示されます。
QRの作成画面
スマートフォンの操作例
QRコードを読み込んだスマートフォン側では、指紋認証等の生体認証が要求されます。認証に成功すると、次のようにスマートフォンとPC-WEBブラウザとの通信が開始され、システムへのログインが可能となります。
現状、デージーネットで検証したAndroid端末では、Wifiやモバイル通信をOFFにすると認証に失敗するため、上記の方法はネットワーク的に閉鎖された環境では利用できません。グローバルネットワークに繋がる環境での利用は問題ありませんが、閉鎖環境ではUSBキーなどを利用した別の方法での認証が必要になります。
Keycloak「情報の一覧」
パスワードレス認証とは、パスワード以外の方法で認証を行うことを言います。本書は、パスワードレス認証方式のであるFIDO2 やPasskeyについて調査した内容をまとめたものです。
Keycloakは、シングルサインオンを実現するための認証プロバイダです。本調査報告書では、インストール方法や詳しい使い方、Rocket.chatとApache HTTP Serverのoidcモジュールとの連携方法を調査した結果を解説しています。
Keycloakを用いて、複数のアプリケーション・サービスのシングルサインオンを実現するための手順の調査報告書です。
本書では、シングルサインオンを提供するサーバとしてKeycloakを使用し、Kerberos認証によりユーザ名やパスワードの入力なしでウェブサービスにログインできるようにする手順を記述します。
LDAPとは、ディレクトリサービスのための標準プロトコルです。LDAPを使い、ディレクトリサービスを提供するソフトウェアやシステムを、LDAPサーバと呼びます。本書は、OSSのLDAPサーバの管理UIの現状についてまとめたものです。
お客様は、システムごとにアカウントを管理していたため、管理者だけでなくユーザにも管理の手間がかかっていました。この記事は、弊社でOSSのKeycloakを利用したシングルサインオン(SSO)システムを導入した事例です。
医療サービスを提供しているお客様に、Keycloakを利用した認証システムを導入しました。お客様は、従業員が利用するポータルサイトやeラーニングシステムなど複数のシステムを利用していました。しかし、従業員の入れ替わりが激しく、IdaaS等の従量課金制のサービスでは、費用面で導入が難しいという課題がありました。そこで、OSSのKeycloakを利用したシングルサインオンサーバを導入しました。
今回は、シングルサインオンのKeycloakに多要素認証を導入した事例です。お客様は、ID/パスワード管理だけではセキュリティ面で不安ということで、多要素認証の導入を検討していました。
クラウド上のサービスを利用する機会が増加したことにより、最近になってシングルサインオンが再注目されています。この記事では、主な選定のポイントについてまとめ、解説します。
ここでは、シングルサインオンの仕組みを説明し、シングルサインオンを実現するためにソフトウェアやサービスを選定する時の選び方と検討のポイントについて説明します。
LDAPサーバは、企業内では特にユーザ情報の管理や認証の基盤として使用されています。ここでは、LDAPサーバのデータを管理するためのOSSを紹介します。
FaceAuthは、顔認証に対応していないサービスでも導入できる顔認証のソフトウェアです。このページでは、顔認証システムの導入におすすめのソフトウェアFaceAuthについて紹介します。
OpenAMとは、シングルサインオン(SSO)を実現するためのソフトウェアです。現在のOpenAMはオープンソースとして提供されていませんが、いくつかの商用サポートベンダーによって、OpenAMの公開とサポートは継続されています。
デモのお申込み
もっと使い方が知りたい方へ
Keycloakの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Keycloakのデモをご希望の方は、下記よりお申込みいただけます。
OSS情報
- KeyclockのLDAPデータ管理
- Keycloakは、シングルサインオンの認証バックエンドとしてLDAPを利用することができます。ここでは、KeycloakのLDAPデータ管理を紹介します。