WebAuthn / Passkeys

Delphi サーバーにパスキーベースのパスワードレス認証を追加できます。WebAuthn Level 2 / FIDO2 の登録・認証セレモニー、アテステーション検証、認証情報ストレージフックを提供します。

TsgcWSAPIServer_WebAuthn

WebAuthn の RP(リライングパーティ)サーバーサイドを実装しています。認証情報チャレンジの生成、navigator.credentials レスポンスの検証、アテステーションステートメントの解析、アサーション署名の検証を行います。

コンポーネントクラス

TsgcWSAPIServer_WebAuthn

プロトコル

WebAuthn Level 2 (W3C)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

RP をマウントして認証情報を保存する

TsgcWebSocketHTTPServer 上に TsgcWSAPIServer_WebAuthn を配置し、RpId/RpName を設定した後、OnRegistrationVerify と OnAuthenticationVerify を処理して認証情報を永続化してください。

uses
  sgcWebSocket, sgcWebSocket_Server_APIs;

var
  Server: TsgcWebSocketHTTPServer;
  WebAuthn: TsgcWSAPIServer_WebAuthn;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;

  WebAuthn := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthn.Server := Server;
  WebAuthn.RelyingParty.Id   := 'example.com';
  WebAuthn.RelyingParty.Name := 'Example RP';

  WebAuthn.OnRegistrationVerify := procedure(Sender: TObject;
    const aRequest: TsgcWebAuthn_RegistrationVerify_Request;
    const aRegistration: TsgcWebAuthn_Registration; const aError: string)
  begin
    // store aRegistration.CredentialId / publicKey / counter / userHandle
  end;

  Server.Active := True;
end;
// uses: sgcWebSocket, sgcWebSocket_Server_APIs
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
TsgcWSAPIServer_WebAuthn *WebAuthn = new TsgcWSAPIServer_WebAuthn(this);
WebAuthn->Server = Server;
WebAuthn->RelyingParty->Id   = "example.com";
WebAuthn->RelyingParty->Name = "Example RP";
Server->Active = true;

主な機能

Delphi プロセスをパスキー対応の認証エンドポイントに変換する RP サーバーです。

登録セレモニー

OnRegistrationOptions が PublicKeyCredentialCreationOptions を発行し、ブラウザが navigator.credentials.create() を呼び出します。OnRegistrationVerify がアテステーションを検証して新しい認証情報レコードを返します。

認証セレモニー

OnAuthenticationOptions が保存済みの認証情報 ID を含む PublicKeyCredentialRequestOptions を発行し、OnAuthenticationVerify が保存された公開鍵を使用してアサーション署名を検証します。

アテステーション解析

nonepackedfido-u2ftpmandroid-keyandroid-safetynetapple のアテステーションステートメント形式をサポートしています。

カウンター検証

認証情報ごとの signCount を追跡してクローンされた認証器を検出します。カウンターが逆行した場合、OnAuthenticationVerify がエラーを報告します。

ユーザー検証

UserVerification はセレモニーごとに requiredpreferreddiscouraged を設定でき、検証ステップでその設定が強制されます。

認証情報レコード

OnAuthenticationOptions はユーザーハンドルを提供するので、進行中のログイン向けに正しい allowCredentials リストを返せます。ストレージの設計はご自由に行えます。

仕様・参考資料

このコンポーネントが実装する標準規格の公式ソースです。

ドキュメント・デモ

コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。

オンラインヘルプ — TsgcWSAPIServer_WebAuthn このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\20.HTTP_Protocol\12.WebAuthn すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。
技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。
ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。

パスキー認証を追加しませんか?

体験版をダウンロードして、Delphi サーバーに WebAuthn / FIDO2 パスキーを導入してください。