== 導入

=== Web Authenticationとは

Web Authenticationは、W3Cで2019年3月に勧告になった、Webアプリケーションの新しいセキュアな認証方式仕様です。
ローカル認証や公開鍵認証、Origin別の鍵管理を組み合わせることで、フィッシングなど認証プロセスに対する攻撃に対して堅固な認証を実現しています。
主要ブラウザでの実装が進みつつあり、セキュリティ、利便性を重視するユーザーに対して優れた選択肢を提供します。
当初はFIDO AllianceでFIDO2.0の一部として仕様策定が進められていましたが、現在はW3Cに移管され、仕様策定が行われています。

=== WebAuthn4Jとは

Web Authentication仕様に基づくサーバーサイド検証を行うためのJavaライブラリです。
全ての構成証明ステートメント（Attestation）をサポートしながら、外部ライブラリへの依存関係は最小限に抑えたポータブルなライブラリです。

=== Spring Security WebAuthnとは

WebAuthn4Jの関連プロジェクトとして、Spring SecurityでWebAuthnを利用するためのラッパーライブラリをSpring Security WebAuthnという名前で開発しています。
Spring Securityを活用したアプリケーションでWebAuthnを導入する場合は、WebAuthn4Jを直接利用するのではなく、
Spring Security WebAuthnを利用するのが良いでしょう。FIDO2 Transport Binding ProfileのREST APIの実装も提供しています。

=== 特徴

==== サポートする構成証明ステートメントフォーマット

WebAuthn4Jでは、以下の通り全ての構成証明ステートメントフォーマットをサポートしています。

- Packed attestation
- FIDO U2F attestation
- Android Key attestation
- Android SafetyNet attestation
- TPM attestation
- None attestation

==== 準拠状況

https://fidoalliance.org/certification/functional-certification/conformance/[FIDO Allianceが提供するFIDO2 Test Tools]
で必須のテストケースに加え、オプションのAndroid Key attestationのテストケースを全て合格しています。

NOTE: FIDO2 Test ToolsはFIDO2 Transport Binding ProfileのREST API経由でテストを実行する為、Spring Security WebAuthnが
提供するFIDO2 Transport Binding ProfileのREST API実装に対して実行して検証を行っています。

==== ポータビリティ

WebAuthn4JはSLF4JとJackson、Apache Kerbyにのみ依存しており、非常に高いポータビリティを持っています。
あなたのJavaアプリへの導入の障害は殆どないでしょう。

=== 要件

==== 言語

- Java8以降

=== 動作環境

- SecureContext（サイトがHTTPS接続か、localhost）

=== Maven Centralからの取得
Mavenを使用している場合、webauthn4jを依存関係として追加して使用してください：

```
<properties>
  ...
  <!-- Use the latest version whenever possible. -->
  <webauthn4j.version>0.10.2.RELEASE</webauthn4j.version>
  ...
</properties>

<dependencies>
  ...
  <dependency>
    <groupId>com.webauthn4j</groupId>
    <artifactId>webauthn4j-core</artifactId>
    <version>${webauthn4j.version}</version>
  </dependency>
  ...
</dependencies>
```

=== ソースコード

ソースコードは https://github.com/webauthn4j/webauthn4j[Github] で管理されています。
----
git clone git@github.com:webauthn4j/webauthn4j.git
----

=== ライセンス

WebAuthn4jは http://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license] ライセンスの
オープンソースソフトウェアです。

=== 開発への参加

WebAuthn4Jに興味を持って頂きありがとうございます。WebAuthn4JはGitHub上で開発を進めています。
お気軽にIssueやPull Requestをお寄せ下さい。

