PulseTrade.Comm.Login.Core
0.1.0-alpha5
dotnet add package PulseTrade.Comm.Login.Core --version 0.1.0-alpha5
NuGet\Install-Package PulseTrade.Comm.Login.Core -Version 0.1.0-alpha5
<PackageReference Include="PulseTrade.Comm.Login.Core" Version="0.1.0-alpha5" />
<PackageVersion Include="PulseTrade.Comm.Login.Core" Version="0.1.0-alpha5" />
<PackageReference Include="PulseTrade.Comm.Login.Core" />
paket add PulseTrade.Comm.Login.Core --version 0.1.0-alpha5
#r "nuget: PulseTrade.Comm.Login.Core, 0.1.0-alpha5"
#:package PulseTrade.Comm.Login.Core@0.1.0-alpha5
#addin nuget:?package=PulseTrade.Comm.Login.Core&version=0.1.0-alpha5&prerelease
#tool nuget:?package=PulseTrade.Comm.Login.Core&version=0.1.0-alpha5&prerelease
PulseTrade.Comm.Login.Core
PulseTrade.Comm.Login.Core is the package-level authentication workflow contract above PulseTrade.Comm.ACL.Core.
It owns:
- login credential vocabulary
- fCell2-facing
ptc.login.config.v1config decode - opaque access/refresh/browser-session token lifecycle
- provider seam for user/password, bearer/session, and external assertion flows
- session registry abstraction
- attempt gate seam for rate limit / lockout
- login audit DTO redaction
- Akka-facing login command/reply message protocol and a small coordinator actor
It does not own authorization. Login success returns an AclPrincipal; ACL policy evaluation still decides whether a command/write action may proceed.
API Surface
LoginConfig.decodeconverts fCell2-facing config intoLoginConfigSnapshotandLoginSecurityOptions.ILoginCredentialVerifiernormalizes credentials intoAclPrincipal.ILoginSessionStoreowns access/refresh/browser-session persistence;InMemoryLoginSessionStoreis LocalDev/demo, whileJsonFileLoginSessionStoreis a package-level durable adapter for restart/replay tests and single-node bootstrap scenarios.ILoginAttemptGateruns before and after verification;InMemoryLoginAttemptGateis the LocalDev/demo lockout gate.LoginCore.authenticateAsync,refreshAsync,revokeAsync,resolveBearerAsync, andresolveSessionAsyncare the direct functional API.LoginCommand/LoginReplyplusLoginActor.props/spawnexpose the Akka boundary.
Verification
dotnet build .\Libs\PulseTrade.Comm\tests\PulseTrade.Comm.ACL.Tests\PulseTrade.Comm.ACL.Tests.fsproj -c Debug
dotnet run --project .\Libs\PulseTrade.Comm\tests\PulseTrade.Comm.ACL.Tests\PulseTrade.Comm.ACL.Tests.fsproj -c Debug --no-build
Latest recorded result: 35/35 passed on 2026-06-30.
Journal / Snapshot / DB
This package does not use Akka.Persistence journal/snapshot tables and does not create SQL tables.
JsonFileLoginSessionStore persists a full UTF-8 JSON snapshot at the caller-supplied path. The snapshot schema is ptc.login.session-store.snapshot.v1; it contains opaque token strings, browser session ids, principal metadata, login session metadata, refresh expiry, and revocation state. Treat this file as sensitive runtime data and keep it outside the repo. It is durable across ordinary process restart if the file survives, but it is not a multi-node SQL/PCSL provider or HA proof.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Akka (>= 1.5.69)
- FSharp.Core (>= 10.1.301)
- PulseTrade.Comm.ACL.Core (= 0.1.0-alpha2)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on PulseTrade.Comm.Login.Core:
| Package | Downloads |
|---|---|
|
PulseTrade.Comm.Login.Pcsl
PulseTrade Comm Login PCSL durable session store provider. |
|
|
PulseTrade.Comm.Login.SqlServer
PulseTrade Comm Login SQL Server durable session store and credential verifier provider. |
|
|
PulseTrade.Comm.Spa.Login
Open PTCS Login extension facade for PulseTrade.Comm.Spa. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha5 | 153 | 6/30/2026 |
| 0.1.0-alpha4 | 38 | 6/30/2026 |
| 0.1.0-alpha3 | 39 | 6/30/2026 |
| 0.1.0-alpha2 | 37 | 6/30/2026 |
| 0.1.0-alpha1 | 41 | 6/30/2026 |