sgcWebSockets WebAuthn サーバー徹底解説

· コンポーネント

TsgcWSAPIServer_WebAuthn コンポーネントは、HTTPS 上で WebAuthn プロトコルの依拠当事者 (relying party) 側を実装する Delphi/FPC サーバーモジュールです。TsgcWebSocketHTTPServer または TsgcWebSocketServer と統合し、登録と認証のための REST 風エンドポイントを公開します。 

エンドポイントの仕組み

デフォルトでは、コンポーネントは /sgcWebAuthn 配下にルートを登録します。

目的デフォルトのエンドポイント説明
登録オプション/Registration/Optionsクライアントが navigator.credentials.create を呼び出す前に、チャレンジと依拠当事者情報を要求します
登録の検証/Registration/Verifyブラウザーが新しいクレデンシャル、アテステーションオブジェクト、クライアントデータをサーバー検証用に送信します
認証オプション/Authentication/Optionsサーバーが許可されたクレデンシャル ID のリストとチャレンジを提供します
認証の検証/Authentication/Verifyブラウザーがアサーション (authenticatorData + 署名) を検証用に送信します
JavaScript ヘルパー/Webauthn標準の WebAuthn ブラウザー呼び出しをラップするヘルパースクリプトを配信します
テストページ/Test開発用に API を試すための簡易 HTML ページ


エンドポイントは EndpointOptions を通じて再マッピングでき、既存のルーティングスキームに合わせられます。 

主要なプロパティ

  1. RelyingParty (RPID / RPName) – クレデンシャルの論理ドメインを識別する必須の DNS 名です。アプリケーションの実効ドメインと一致させてください。
  2. Origins & TopOrigins – セミコロン区切りの有効なオリジンのリストです。Origins は主要ドメインを対象とし、TopOrigins は iframe 埋め込み時に使用されます。
  3. AllowCrossOriginsTrue に設定すると、クロスオリジンの iframe が認証を要求できます。慎重に管理された TopOrigins とサーバー側の検証が必要です。
  4. Algorithms – サポートする COSE アルゴリズム識別子 (例: ES256RS256EdDSA) です。サーバーが受け付ける公開鍵の種類を制御します。
  5. TimeoutMS – WebAuthn 操作の完了についてクライアントに推奨するタイムアウトです。
  6. UserVerification – ユーザー検証のポリシー (preferredrequireddiscouraged) です。
  7. Attestation – アテステーションが none、indirect、direct のいずれであるかを指定します。direct アテステーションではアテステーション証明書チェーンの検証が必要です。
  8. Metadata Service (MDS) – 有効にすると、コンポーネントは FIDO メタデータサービスファイルを参照して認証器モデルの信頼性を確認します。フィールド:
    • MDS_FileName – ローカルにキャッシュされた JSON メタデータ (FIDO からダウンロード)。
    • RootCert_FileName – メタデータ署名を検証するためのルート証明書。
  9. ChallengeOptions – 生成されるチャレンジの長さやランダム性のソースをカスタマイズできます。
  10. CredentialStorage – 直接のプロパティではありませんが、コンポーネントはアプリケーションがクレデンシャル公開鍵、署名カウンター、ユーザーハンドルを永続化することを想定しています。

イベントのライフサイクル

登録

認証

これらのイベントにより、オプションの生成からアサーションの処理まで、プロトコルの各ステップを細かく制御できます。