WebAuthn | 認証

WebAuthn 認証は、以前に登録された公開鍵クレデンシャルを使用してユーザーがログインできるようにします。登録時のユーザーの保存済み公開鍵を使用して署名済みチャレンジを検証します。

 

 

認証オプション

 

認証には、クライアントがTsgcWSAPIServer_WebAuthnサーバーで設定されたAuthentication Options Endpointへの新しいHTTPリクエストを使用して認証フローを開始する必要があります。デフォルトでは、エンドポイントは/sgcWebAuthn/Authentication/Optionsです。したがって、サーバーがドメインhttps://www.test.comでリッスンしている場合、クライアントはURL https://www.test.com/sgcWebAuthn/Authentication/Optionsに新しいリクエストを行う必要があります。

 

クライアントはアサーション(認証レスポンス)を POST でサーバーに送信します

 

{"username":"test","user_verification":"preferred"}

 

サーバーは PublicKeyCredentialRequestOptions を生成します

 

{
"challenge": "9d0d61edf30b45f8b88aef7087f9117716e2b7d8b0ee4460b06142f39dd0ec9f",
"timeout": 60000,
"rpId": "localhost",
"allowCredentials": [
{
"id": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"type": "public-key",
"transports": [
"nfc",
"usb"
]
}
],
"userVerification": "preferred",
"hints": [],
"attestation": "none",
"attestationFormats": [],
"extensions": {}
}

 

 

認証の検証

 

認証には、クライアントが TsgcWSAPIServer_WebAuthn サーバーで設定された認証確認エンドポイントへの新しい HTTP リクエストを使用して認証フローを開始する必要があります。デフォルトでは、エンドポイントは /sgcWebAuthn/Authentication/Verify です。サーバーがドメイン https://www.test.com でリッスンしている場合、クライアントは https://www.test.com/sgcWebAuthn/Authentication/Verify という URL に新しいリクエストを作成する必要があります。

 

ブラウザーは、ユーザーに認証器(例えば指紋、YubiKey)の使用を求めます。認証器は、credential IDにリンクされた秘密鍵でチャレンジに署名します。返される認証情報には次が含まれます:

 

 

クライアントリクエストの JSON 例を以下に示します:

 

{
"id": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"rawId": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"response": {
"authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2MFAAAABw",
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ.....",
"signature": "MEQCIAJRqvvys8....",
"userHandle": "36b9d6a84204487382fee62e7e67a80d"
},
"type": "public-key",
"clientExtensionResults": {},
"authenticatorAttachment": "cross-platform"
}

 

サーバーはクライアントからのリクエストを読み取り、資格情報が保存されていることを検証し、署名を検証します。署名が有効な場合、イベントOnWebAuthnAuthenticationSuccessfulが呼び出されます。

 

 

 

認証フロー

次のリンクを使用して、認証フロープロセスの詳細情報を取得してください。