この登録オプションリクエストは、WebAuthn 登録を安全にブートストラップするために必要です。サーバーに以下を要求します。
ブラウザはセキュアな WebAuthn 資格情報の登録を開始するためにサーバーから資格情報作成オプションを取得する必要があります。これは通常ブラウザからサーバーエンドポイント (/sgcWebAuthn/Registration/Options など) への HTTPS POST リクエストで実行され、チャレンジ、RP ID、ユーザー情報などのパラメータを準備します。
リクエストボディにはユーザーを識別し、場合によっては設定の優先事項を提供するデータが含まれています。通常は次のような形式です:
{
"username": "alice@example.com",
"displayName": "Alice Smith",
"authenticatorSelection": {
"authenticatorAttachment": "platform", // オプション: platform または cross-platform
"userVerification": "preferred" // オプション: required | preferred | discouraged
},
"attestation": "none", // または "direct"、"indirect"
"residentKey": "discouraged" // オプション
}
WebAuthn サーバーコンポーネントは、EndpointOptions.RegistrationOptions プロパティに設定されたエンドポイントで、PublicKeyCredentialCreationOptions を取得するブラウザの初期リクエストをリッスンします。サーバーが新しい HTTP リクエストを受信すると、OnWebAuthnRegistrationOptionsRequest イベントが呼び出され、クライアントから送信されたリクエストにアクセスして、Accept パラメータを False に設定することでリクエストをキャンセルできます。
procedure OnWebAuthnRegistrationOptionsRequest(Sender: TObject; const aRequest: TsgcWebAuthn_RegistrationOptions_Request; var Accept: Boolean);
begin
if aRequest.Username = 'anonymous' then
Accept := False;
end;