Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(WIP) Demo site update #277

Draft
wants to merge 18 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -330,5 +330,6 @@ ASALocalRun/
.mfractor/
/results
/Test/coverage.netcoreapp3.1.cobertura.xml

.DS_Store
/testEnvironments.json
5 changes: 3 additions & 2 deletions Demo/Controller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
using Fido2NetLib.Objects;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

using static Fido2NetLib.Fido2;

namespace Fido2Demo
Expand All @@ -21,9 +20,11 @@ public class MyController : Controller
public static IMetadataService _mds;
public static readonly DevelopmentInMemoryStore DemoStorage = new DevelopmentInMemoryStore();

public MyController(IFido2 fido2)
public MyController(IFido2 fido2, IMetadataService metadataService)
{
_fido2 = fido2;

_mds = metadataService;
}

private string FormatException(Exception e)
Expand Down
73 changes: 63 additions & 10 deletions Demo/Pages/_Layout.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,21 @@
<html lang="en">

<head>
<title>FIDO2 &amp; Webauthn for .NET</title>
<title>FIDO2 &amp; WebAuthn for .NET</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">


<link href="https://fonts.googleapis.com/css?family=Work+Sans" rel="stylesheet">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/sweetalert2"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/sweetalert2" defer></script>
<script type="text/javascript" src="~/js/jquery-3.6.0.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous" defer></script>
<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>-->

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.10.1/sweetalert2.min.css" />
<!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css" rel="stylesheet" type="text/css" />
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
<script src="https://use.fontawesome.com/releases/v5.3.1/js/all.js" defer></script>
<style>
html {
scroll-behavior: smooth;
Expand Down Expand Up @@ -58,14 +59,14 @@
<a class="navbar-item" asp-page="/overview">
Home
</a>
<a class="navbar-item" href="https://github.com/abergs/fido2-net-lib#examples">
<a class="navbar-item" href="https://github.com/passwordless-lib/fido2-net-lib#examples">
Documentation
</a>
<a class="navbar-item" href="https://opencollective.com/passwordless">
Become a backer
</a>
</a>
<span class="navbar-item">
<a class="button is-info is-inverted" href="https://github.com/abergs/fido2-net-lib">
<a class="button is-info is-inverted" href="https://github.com/passwordless-lib/fido2-net-lib">
<span class="icon">
<i class="fab fa-github"></i>
</span>
Expand Down Expand Up @@ -114,16 +115,68 @@
</div>
</section>
@RenderBody()
<dialog class="mdl-dialog" id="creationDataDialog">
<div class="mdl-dialog__actions">
<button type="button" class="mdl-button close" id="creationDataDialog_xButton">
<i class="material-icons">close</i>
</button>
</div>
<h3 class="mdl-dialog__title">Credential Creation Data</h3>
<div class="mdl-dialog__content">
<p>
<b>Require Resident Key</b>
<br>
<span id="creationData_residentKey"></span>
</p>
<p>
<b>Authenticator Data</b>
<br>
<span id="creationData_authenticatorData"></span>
</p>
<p>
<b>Authenticator Data in Hex</b>
<br>
<span id="creationData_authenticatorDataHex"></span>
</p>
<p>
<b>Public Key</b>
<br>
<span id="creationData_publicKey"></span>
</p>
<p>
<b>Extension Data</b>
<br>
<span id="creationData_extensionData"></span>
</p>
<p>
<b>Attestation Statement Chain</b>
<br>
<span id="creationData_attestationStatementChainJSON"></span>
</p>
<p>
<b>Attestation Statement in Hex</b>
<br>
<span id="creationData_attestationStatementHex"></span>
</p>

</div>

<div class="mdl-dialog__actions">
<button type="button" class="mdl-button close" id="creationDataDialog_closeButton">
Close
</button>
</div>
</dialog>
<footer class="footer" style=" margin-top: 20vh">
<div class="content has-text-centered">
<p>
<strong>Fido2 .NET library</strong> by <a href="https://github.com/abergs/">Anders Åberg</a>, <a href="https://github.com/aseigler">Alex Seigler</a> and <a href="https://github.com/abergs/fido2-net-lib/graphs/contributors">contributors</a>. The source code is licensed
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>. Available on <a href="https://github.com/abergs/fido2-net-lib">Github</a>
<strong>Fido2 .NET library</strong> by <a href="https://github.com/abergs/">Anders Åberg</a>, <a href="https://github.com/aseigler">Alex Seigler</a> and <a href="https://github.com/passwordless-lib/fido2-net-lib/graphs/contributors">contributors</a>. The source code is licensed
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>. Available on <a href="https://github.com/passwordless-lib/fido2-net-lib">Github</a>
</p>

<p><small>Supported by the <a href="https://dotnetfoundation.org">.NET Foundation</a></small></p>
<img src="~/images/dotnetfoundation_v4_horizontal.svg" alt=".NET foundation logo" width="220" />

<p><small>Illustrations from <a href="https://medium.com/@@herrjemand/introduction-to-webauthn-api-5fd1fb46c285">Ackermann Yuriy</a></small></p>
</div>
</footer>
Expand Down
160 changes: 152 additions & 8 deletions Demo/Pages/_options.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,39 @@
<p>These settings are typically administred by the RP but for demo purposes we expose them to you for testing behaviours and browser support</p>
<form id="options">
<div class="field">
<label class="label">Attestation type</label>
<label class="label">Attestation</label>
<div class="control">
<div class="select">
<select id="option-attestation">
<option selected value="none">None</option>
<option value="undefined" selected>Undefined</option>
<option value="none">None</option>
<option value="indirect">Indirect</option>
<option value="direct">Direct</option>
<option value="enterprise">Enterprise</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">Authenticator</label>
<label class="label">Authenticator Attachment</label>
<div class="control">
<div class="select">
<select id="option-authenticator">
<option selected value="">Not specified</option>
<option value="cross-platform">Cross Platform (Token)</option>
<option selected value="undefined">Undefined</option>
<option value="platform">Platform (TPM)</option>
<option value="cross-platform">Cross-Platform (Security Key)</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">User verification</label>
<label class="label">User Verification</label>
<div class="control">
<div class="select">
<select id="option-userverification">
<option selected value="undefined">Undefined</option>
<option value="required">Required</option>
<option selected value="preferred">Preferred</option>
<option value="preferred">Preferred</option>
<option value="discouraged">Discouraged</option>
</select>
</div>
Expand All @@ -50,14 +53,155 @@
<div class="control">
<div class="select">
<select id="option-residentkey">
<option value="undefined" selected>Undefined</option>
<option value="required">Required</option>
<option selected value="preferred">Preferred</option>
<option value="preferred">Preferred</option>
<option value="discouraged">Discouraged</option>
</select>
</div>
</div>
<p class="help">For register the client will guide the user through setting up user verification if needed to create a discoverable credential. This takes precedence over the setting of userVerification.</p>
</div>
<div class="field">
<label class="label">RP Info</label>
<div class="control">
<div class="select">
<select id="option-rpinfo">
<option value="undefined" selected>Undefined RP ID</option>
<option value="normal">This domain</option>
<option value="suffix">Suffix to this domain</option>
<option value="securityerror">foo.com</option>
<option value="emptyrpid">Empty RP ID</option>
<option value="emptyrpname">Empty RP Name</option>
<option value="emptyrpicon">Empty RP Icon</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">CredProtect Extension</label>
<div class="control">
<div class="select">
<select id="option-credprotect">
<option value="undefined" selected>Undefined</option>
<option value="userVerificationOptional">UVOptional</option>
<option value="userVerificationOptionalWithCredentialIDList">UVOptionalWithCredIDList</option>
<option value="userVerificationRequired">UVRequired</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">Enforce CredProtect</label>
<div class="control">
<div class="select">
<select id="option-credprotectenforce">
<option value="undefined" selected>Undefined</option>
<option value="false">False</option>
<option value="true">True</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">HMAC Extension</label>
<div class="control">
<div class="select">
<select id="option-hmaccreate">
<option value="undefined" selected>Undefined</option>
<option value="false">False</option>
<option value="true">True</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">MinPinLength Extension</label>
<div class="control">
<div class="select">
<select id="option-minPinLength">
<option value="undefined" selected>Undefined</option>
<option value="false">False</option>
<option value="true">True</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">CredBlob Extension</label>
<div class="control">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="text" id="option-credBlob">
<label class="mdl-textfield__label" for="option-credBlob">CredBlob...</label>
</div>
</div>
</div>
<div class="field">
<label class="label">LargeBlob Extension</label>
<div class="control">
<div class="select">
<select id="option-largeBlob">
<option value="undefined" selected>Undefined</option>
<option value="preferred">Preferred</option>
<option value="required">Required</option>
</select>
</div>
</div>
</div>
<div class="mdl-grid mdl-grid--no-spacing">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-ES256">
<input type="checkbox" id="option-ES256" class="mdl-checkbox__input" checked>
<span class="mdl-checkbox__label">Use ES256</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-ES384">
<input type="checkbox" id="option-ES384" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use ES384</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-ES512">
<input type="checkbox" id="option-ES512" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use ES512</span>
</label>
</div>
<div class="mdl-grid mdl-grid--no-spacing">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-RS256">
<input type="checkbox" id="option-RS256" class="mdl-checkbox__input" checked>
<span class="mdl-checkbox__label">Use RS256</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-RS384">
<input type="checkbox" id="option-RS384" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use RS384</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-RS512">
<input type="checkbox" id="option-RS512" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use RS512</span>
</label>
</div>
<div class="mdl-grid mdl-grid--no-spacing">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-PS256">
<input type="checkbox" id="option-PS256" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use PS256</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-PS384">
<input type="checkbox" id="option-PS384" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use PS384</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-PS512">
<input type="checkbox" id="option-PS512" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use PS512</span>
</label>
</div>
<div class="mdl-grid mdl-grid--no-spacing">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-cell mdl-cell--6-col" for="option-EdDSA">
<input type="checkbox" id="option-EdDSA" class="mdl-checkbox__input" checked>
<span class="mdl-checkbox__label">Use EdDSA</span>
</label>
</div>
<div class="mdl-grid mdl-grid--no-spacing">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="option-excludeCredentials">
<input type="checkbox" id="option-excludeCredentials" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Use excludeCredentials</span>
</label>
</div>
</form>
</div>
</div>
Expand Down
9 changes: 2 additions & 7 deletions Demo/Pages/_options.cshtml.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Fido2Demo.Pages
{
Expand All @@ -13,4 +8,4 @@ public void OnGet()
{
}
}
}
}
Loading