Skip to content
Merged
Show file tree
Hide file tree
Changes from 72 commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
b4a1a9c
Add pristine 'dotnet new blazor --auth Individual' as Essentials.Samp…
mattleibow Jul 24, 2026
0b564ba
Re-add bootstrap *.js.map files from the Blazor template
mattleibow Jul 24, 2026
dad6bfa
Exclude regenerated SQLite app.db from the WebServer sample
mattleibow Jul 24, 2026
9b52dac
Wire WebServer sample into MAUI repo build conventions
mattleibow Jul 24, 2026
eac2f66
Add Essentials.Samples.WebServer to the solutions
mattleibow Jul 24, 2026
918b140
Align WebServer EF/Identity package versions to the repo's ASP.NET Co…
mattleibow Jul 24, 2026
1074eb4
Add spec for cross-platform Passkeys (WebAuthn/FIDO2) Essentials API
mattleibow Jul 16, 2026
f6bd94c
Split passkey usage example into registration and login sections
mattleibow Jul 16, 2026
fc02723
Use opaque JSON-carrier objects with selective extension methods
mattleibow Jul 16, 2026
d6e0271
Add bound Obj-C/.NET Apple example and industry-anchored naming decis…
mattleibow Jul 16, 2026
a132df4
Drop base type/extension methods; expose JSON via ToString and add ca…
mattleibow Jul 16, 2026
95ae747
Address PR review feedback: HTTP posting, macOS scope, filenames, wor…
mattleibow Jul 16, 2026
58246a0
Revise spec: no-Play Android, OS-specifics, decoded-props, ASP.NET Id…
mattleibow Jul 16, 2026
cc69219
Add Appendix A (conditional-UI/autofill follow-up); split knob 1a/1b …
mattleibow Jul 16, 2026
496b9d1
Expand §7.5 with per-knob native APIs and behavior matrices
mattleibow Jul 16, 2026
26e1469
Convert spec to definitive end-state (remove decision-journal framing)
mattleibow Jul 16, 2026
9f64ae7
Improve section flow and fix heading anchors
mattleibow Jul 16, 2026
dea2d36
Address new review feedback: window API, origin, PasskeyException, wo…
mattleibow Jul 17, 2026
cd71df4
Implement Passkeys Essentials API (shared, Apple, Windows; Android/ot…
mattleibow Jul 17, 2026
4d0667e
Implement Android passkeys via AndroidX Credential Manager
mattleibow Jul 17, 2026
1a56304
Address PR review: parser/validation, Windows correctness, iOS UV, tests
mattleibow Jul 18, 2026
8de6158
Add reference server and sample pages for Passkeys + WebAuthenticator
mattleibow Jul 23, 2026
90fb3d8
Rename auth sample server to Samples.WebServer and fix broken styling
mattleibow Jul 23, 2026
e2440c1
Skip email confirmation on the dev auth sample server
mattleibow Jul 23, 2026
15e3c00
Automate Android passkey setup for the sample
mattleibow Jul 23, 2026
42ceb55
Rename setup-devtunnel.ps1 to Configure.ps1 and derive Android values
mattleibow Jul 23, 2026
88c5622
Fix dev tunnel URL detection in Configure.ps1
mattleibow Jul 23, 2026
85ec0c0
Use the per-tunnel (random) URL and avoid duplicate tunnels
mattleibow Jul 23, 2026
b132223
Refocus samples on passkeys only; align server with stock template
mattleibow Jul 23, 2026
cae11ce
Require sign-in for passkey registration; drop passwordless fallback
mattleibow Jul 23, 2026
b6051a2
Fix Configure.ps1 to read the keystore .NET Android actually signs with
mattleibow Jul 23, 2026
0ae1d99
Fix antiforgery 400 on native passkey endpoints; add sign-out + clean…
mattleibow Jul 24, 2026
f36a0aa
Make passkey sign-in username-less to avoid credential/user mismatch
mattleibow Jul 24, 2026
ec46515
Empty the sample credential fields; drop hardcoded alice@example.com …
mattleibow Jul 24, 2026
f5dff0b
Adopt baseline's repo-integration for the WebServer sample
mattleibow Jul 24, 2026
6327f27
Make the passkeys sample behave like a real login system
mattleibow Jul 24, 2026
9b8679c
Add passkey list, naming, and removal to the sample
mattleibow Jul 25, 2026
f55fe30
Add server-brokered (BFF) external OAuth sign-in to the sample
mattleibow Jul 26, 2026
57e5d98
Make external OAuth sign-in generic; remove the mock provider
mattleibow Jul 26, 2026
bbc1d38
Reword external buttons to "Sign in with <provider>"; harden Apple co…
mattleibow Jul 27, 2026
6edb514
Trim sample comments to describe current behavior
mattleibow Jul 27, 2026
c95e665
Move external OAuth sign-in to a stacked PR
mattleibow Jul 27, 2026
e0b050a
Add Apple passkeys test setup and a samples README/testing guide
mattleibow Jul 27, 2026
8848bb1
Refine Apple passkey testing docs in the samples README
mattleibow Jul 27, 2026
3ea05fb
Correct Mac Catalyst signing note in the samples README
mattleibow Jul 27, 2026
770e6ee
Make Configure.ps1 a one-stop Apple signing setup for the passkeys sa…
mattleibow Jul 27, 2026
852329d
Keep all passkey-test dev config out of committed files
mattleibow Jul 27, 2026
6f04dae
Refine Configure.ps1: shared ApplicationId, fail-fast, xplat plist, t…
mattleibow Jul 27, 2026
bd04026
Move the server-URL AssemblyMetadata fully into the local props
mattleibow Jul 27, 2026
2a2c1f6
Remove the temporary nuget.org source from NuGet.config
mattleibow Jul 27, 2026
22095f9
Slim the passkeys sample server to a headless minimal-API app
mattleibow Jul 27, 2026
9764b50
Simplify the passkeys sample server further (in-memory DB, framework …
mattleibow Jul 27, 2026
8fa170f
Rename the sample server to Essentials.Samples.Server.Passkeys
mattleibow Jul 27, 2026
430fb53
Trim the passkeys sample to the core create/assert test flow
mattleibow Jul 27, 2026
1243a9f
Auto-label passkeys with the device name; reorganize the samples folder
mattleibow Jul 27, 2026
6eac960
Consolidate the passkeys docs into one guide; rename the dev tunnel id
mattleibow Jul 27, 2026
e774d1c
Host the passkeys dev tunnel by default (flip -StartHost to -NoStartH…
mattleibow Jul 27, 2026
0c481e2
Use `dotnet run` for the sample app in the passkeys guide
mattleibow Jul 27, 2026
f11fb42
Auto-detect the Apple Team ID in Configure-Passkeys.ps1
mattleibow Jul 27, 2026
a6df3b9
Configure-Passkeys.ps1: set up Apple + Android by default, fail if th…
mattleibow Jul 27, 2026
945d6db
Harden Configure-Passkeys.ps1: fail fast on fatal errors; rename keys…
mattleibow Jul 27, 2026
0914f4e
Add blank line after uri-guard for readability
mattleibow Jul 27, 2026
21a3aba
Trim passkeys sample: dead EF pins, server toolbar button, offer-pass…
mattleibow Jul 27, 2026
0e8f26f
Passkeys: source-gen JSON, SDK Base64Url, BCL exceptions
mattleibow Jul 28, 2026
9a40f96
Passkeys: file-scoped namespaces; fix Android sync-cancellation seman…
mattleibow Jul 28, 2026
3466436
Passkeys: nest platform/internal helpers to stop namespace leakage
mattleibow Jul 28, 2026
b38b2f5
Passkeys (Android): fully-qualify System.OperationCanceledException
mattleibow Jul 28, 2026
a4489a3
Harden passkeys and generate Windows WebAuthn bindings
mattleibow Jul 28, 2026
9a71b92
Keep Windows passkey modal in front
mattleibow Jul 28, 2026
316bc93
Avoid duplicate CsWin32 generator inputs
mattleibow Jul 28, 2026
64fa101
Address passkeys review feedback after rebase
mattleibow Jul 29, 2026
7712d19
Document Apple passkey exclusion limitation
mattleibow Jul 29, 2026
1698c6f
Support downlevel Windows WebAuthn capabilities
mattleibow Jul 30, 2026
53a582e
Merge remote-tracking branch 'origin/net11.0' into mattleibow-minimal…
mattleibow Jul 31, 2026
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
7 changes: 7 additions & 0 deletions Microsoft.Maui-dev.sln
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample", "src\Es
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Essentials.Sample.Server.WebAuthenticator.csproj", "{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Samples.Server.Passkeys", "src\Essentials\samples\Samples.Server.Passkeys\Essentials.Samples.Server.Passkeys.csproj", "{049EE355-4999-4ECB-8C66-F3425B024336}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorWinFormsApp", "src\BlazorWebView\samples\BlazorWinFormsApp\BlazorWinFormsApp.csproj", "{7A10CA08-6394-43D3-AFAA-4D696EA111C9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorWpfApp", "src\BlazorWebView\samples\BlazorWpfApp\BlazorWpfApp.csproj", "{3C0ACFD6-9FBE-46C2-B4A5-3C1839476A1D}"
Expand Down Expand Up @@ -407,6 +409,10 @@ Global
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.Build.0 = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.Build.0 = Release|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -702,6 +708,7 @@ Global
{95BF8553-3D9D-4831-ACDD-A3E697BC08A6} = {94F3C036-A5F4-4ACC-A028-8506802ADB88}
{C677BF3D-B234-491D-BA48-D9742DB564F8} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{049EE355-4999-4ECB-8C66-F3425B024336} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{7A10CA08-6394-43D3-AFAA-4D696EA111C9} = {A8E9400E-70DD-421F-8609-1C2FA4AE8E71}
{3C0ACFD6-9FBE-46C2-B4A5-3C1839476A1D} = {A8E9400E-70DD-421F-8609-1C2FA4AE8E71}
{ED7F28E0-D0AF-417D-983D-3D874EEE8554} = {1614D1A4-5C3D-4D5B-8C89-426E37A564EF}
Expand Down
1 change: 1 addition & 0 deletions Microsoft.Maui-mac.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"src\\Core\\tests\\DeviceTests\\Core.DeviceTests.csproj",
"src\\Core\\tests\\UnitTests\\Core.UnitTests.csproj",
"src\\Essentials\\samples\\Sample.Server.WebAuthenticator\\Essentials.Sample.Server.WebAuthenticator.csproj",
"src\\Essentials\\samples\\Samples.Server.Passkeys\\Essentials.Samples.Server.Passkeys.csproj",
"src\\Essentials\\samples\\Samples\\Essentials.Sample.csproj",
"src\\Essentials\\src\\Essentials.csproj",
"src\\Essentials\\test\\DeviceTests\\Essentials.DeviceTests.csproj",
Expand Down
7 changes: 7 additions & 0 deletions Microsoft.Maui-vscode.sln
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample", "src\Es
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Essentials.Sample.Server.WebAuthenticator.csproj", "{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Samples.Server.Passkeys", "src\Essentials\samples\Samples.Server.Passkeys\Essentials.Samples.Server.Passkeys.csproj", "{049EE355-4999-4ECB-8C66-F3425B024336}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED7F28E0-D0AF-417D-983D-3D874EEE8554}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtils.DeviceTests", "src\TestUtils\src\DeviceTests\TestUtils.DeviceTests.csproj", "{F28E8899-98D2-4915-8D48-D101D4837AB9}"
Expand Down Expand Up @@ -370,6 +372,10 @@ Global
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.Build.0 = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.Build.0 = Release|Any CPU
{F28E8899-98D2-4915-8D48-D101D4837AB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F28E8899-98D2-4915-8D48-D101D4837AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F28E8899-98D2-4915-8D48-D101D4837AB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -614,6 +620,7 @@ Global
{95BF8553-3D9D-4831-ACDD-A3E697BC08A6} = {94F3C036-A5F4-4ACC-A028-8506802ADB88}
{C677BF3D-B234-491D-BA48-D9742DB564F8} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{049EE355-4999-4ECB-8C66-F3425B024336} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{ED7F28E0-D0AF-417D-983D-3D874EEE8554} = {1614D1A4-5C3D-4D5B-8C89-426E37A564EF}
{F28E8899-98D2-4915-8D48-D101D4837AB9} = {7AC28763-9C68-4BF9-A1BA-25CBFFD2D15C}
{C8B3C3B3-1CDA-41A2-BF20-A7FE33D6BB36} = {25D0D27A-C5FE-443D-8B65-D6C987F4A80E}
Expand Down
1 change: 1 addition & 0 deletions Microsoft.Maui-windows.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"src\\Core\\tests\\DeviceTests\\Core.DeviceTests.csproj",
"src\\Core\\tests\\UnitTests\\Core.UnitTests.csproj",
"src\\Essentials\\samples\\Sample.Server.WebAuthenticator\\Essentials.Sample.Server.WebAuthenticator.csproj",
"src\\Essentials\\samples\\Samples.Server.Passkeys\\Essentials.Samples.Server.Passkeys.csproj",
"src\\Essentials\\samples\\Samples\\Essentials.Sample.csproj",
"src\\Essentials\\src\\Essentials.csproj",
"src\\Essentials\\test\\DeviceTests\\Essentials.DeviceTests.csproj",
Expand Down
7 changes: 7 additions & 0 deletions Microsoft.Maui.sln
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample", "src\Es
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Essentials.Sample.Server.WebAuthenticator.csproj", "{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.Samples.Server.Passkeys", "src\Essentials\samples\Samples.Server.Passkeys\Essentials.Samples.Server.Passkeys.csproj", "{049EE355-4999-4ECB-8C66-F3425B024336}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorWinFormsApp", "src\BlazorWebView\samples\BlazorWinFormsApp\BlazorWinFormsApp.csproj", "{7A10CA08-6394-43D3-AFAA-4D696EA111C9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorWpfApp", "src\BlazorWebView\samples\BlazorWpfApp\BlazorWpfApp.csproj", "{3C0ACFD6-9FBE-46C2-B4A5-3C1839476A1D}"
Expand Down Expand Up @@ -396,6 +398,10 @@ Global
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC}.Release|Any CPU.Build.0 = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{049EE355-4999-4ECB-8C66-F3425B024336}.Release|Any CPU.Build.0 = Release|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A10CA08-6394-43D3-AFAA-4D696EA111C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -683,6 +689,7 @@ Global
{95BF8553-3D9D-4831-ACDD-A3E697BC08A6} = {94F3C036-A5F4-4ACC-A028-8506802ADB88}
{C677BF3D-B234-491D-BA48-D9742DB564F8} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{F7DB0CB3-D244-403A-8C3B-B1ED5E5838EC} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{049EE355-4999-4ECB-8C66-F3425B024336} = {95BF8553-3D9D-4831-ACDD-A3E697BC08A6}
{7A10CA08-6394-43D3-AFAA-4D696EA111C9} = {A8E9400E-70DD-421F-8609-1C2FA4AE8E71}
{3C0ACFD6-9FBE-46C2-B4A5-3C1839476A1D} = {A8E9400E-70DD-421F-8609-1C2FA4AE8E71}
{ED7F28E0-D0AF-417D-983D-3D874EEE8554} = {1614D1A4-5C3D-4D5B-8C89-426E37A564EF}
Expand Down
Loading
Loading