|
1 | 1 | # FIDO2 .NET library (WebAuthn) |
2 | | -A working (maybe still proof of concept) implementation library + demo for fido2 and WebAuthn using .NET (Work in progress) |
| 2 | +A working implementation library + demo for fido2 and WebAuthn using .NET |
3 | 3 |
|
4 | | -**Purpose**: Provide a developer friendly and well tested .NET server side library for easy validation (attestation & assertion) of WebAuthn/FIDO2 credentials to increase the adoption of the technology, ultimately defeating phishing attacks. |
| 4 | +### Purpose |
| 5 | +Provide a developer friendly and well tested .NET server side library for easy validation (attestation & assertion) of WebAuthn/FIDO2 credentials to increase the adoption of the technology, ultimately defeating phishing attacks. |
5 | 6 |
|
6 | | -Demo: https://fido2.azurewebsites.net/ |
| 7 | +### Demo |
| 8 | +* **Online example**: https://fido2.azurewebsites.net/ |
| 9 | +* [Code examples](#Examples) |
7 | 10 |
|
8 | | -To run the demo locally: Start Fido2Demo (SSL, expected url https://localhost:44329) and open https://localhost:44329/ in the browser. |
| 11 | +**To run the demo locally**: Start Fido2Demo (preferably https, expected url https://localhost:44329) and open https://localhost:44329/ in the browser. |
| 12 | +You also need to either set the MetadataService to `null` or add the applicationSettings as described below. |
9 | 13 |
|
10 | | -In order to utilize the metadata provided from FIDO Alliance Metadata Service you must register for an access token (https://fidoalliance.org/mds/). Set the MDSAccessToken app secret value to your access token, and the CacheDir app secret value to a local directory to cache metadata. See https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets for more information on app secret usage. |
| 14 | +In order to utilize the metadata provided from FIDO Alliance Metadata Service you must register for an access token (https://fidoalliance.org/mds/). Set the `fido2:MDSAccessKey` app secret value to your access token, and the `fido2:MDSCacheDirPath` app secret value to a local directory to cache metadata. See https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets for more information on app secret usage. |
11 | 15 |
|
12 | | -If you want to have a look at the code, the most interesting is these files for now: |
13 | | - |
14 | | -* [Controller.cs](https://github.com/abergs/fido2-net-lib/blob/master/Fido2Demo/Controller.cs) |
15 | | -* [Fido2NetLib.cs](https://github.com/abergs/fido2-net-lib/blob/master/fido2-net-lib/Fido2NetLib.cs) |
16 | | -* [AuthenticatorAttestationResponse.cs](https://github.com/abergs/fido2-net-lib/blob/master/fido2-net-lib/AuthenticatorAttestationResponse.cs) |
17 | | - |
18 | | -The HTML and javascript is copied (more or less as-is) from WebAuthn.io. |
| 16 | +The HTML and javascript is copied (and then updated) from WebAuthn.io. |
19 | 17 |
|
20 | 18 | Feedback, issues and pull requests are VERY welcome. |
21 | 19 |
|
22 | 20 |
|
23 | 21 | ## Supported features |
24 | 22 |
|
25 | 23 | - ✅ Attestation API & verification (Register and verify credentials/authenticators) |
26 | | -- ✅ Assertion API & verification (Authenticate users) |
| 24 | +- ✅ Assertion API & verification (Authenticate users) |
| 25 | +- ✅ 100% success rate in conformance testing ([results](https://github.com/abergs/fido2-net-lib/issues/13)) |
27 | 26 | - ✅ Fido 2 Security Keys |
28 | 27 | - ✅ Backwards compatibility with Fido-u2f. |
29 | 28 | - ✅ Windows Hello support |
30 | 29 | - ✅ ES256 Public Key format |
31 | 30 | - ✅ "none", "fido-u2f", "android-key", "android-safetynet", "tpm" & "packed" attestation formats |
32 | | -- ❌ Extensions |
33 | 31 | - ✅ Examples & demo's |
34 | 32 | - ✅ Intellisense documentation |
35 | | -- ❌ Formal documentation |
36 | | -- ❌ Recommended usage patterns |
| 33 | +- 💤 [Formal documentation](https://github.com/abergs/fido2-net-lib/issues/53) |
| 34 | +- 💤 Recommended [usage patterns](https://github.com/abergs/fido2-net-lib/issues/54) |
| 35 | +- ❌ [Extensions](https://github.com/abergs/fido2-net-lib/issues/55) |
| 36 | + |
| 37 | + |
| 38 | +## Configuration |
| 39 | + |
| 40 | + *Only some options are mention here, see the [Configuration](https://github.com/abergs/fido2-net-lib/blob/master/fido2-net-lib/Fido2NetLib.cs) class for all options* |
| 41 | + |
| 42 | +* `fido2:MDSAccessKey` - App Secret / environment variable that holds the FIDO2 MDS AccessKey. *Required when using the default [MetadataService provider](https://fidoalliance.org/mds/).* |
| 43 | +* `fido2:MDSCacheDirPath` - App Secret / environment variable that sets the cache path for the MDS. *Required when using the default [MetadataService provider](https://fidoalliance.org/mds/).* |
37 | 44 |
|
38 | 45 | ## Conformance testing tool |
39 | 46 | To run a suit of test of different verifications and attestation formats, register and download the [FIDO Test tools](https://fidoalliance.org/test-tool-access-request/) |
|
0 commit comments