API client for the Identisure REST API.
Documentation: identisure.github.io/api-client-csharp
.NET 8 or later.
- BankID SE: auth, sign, phone auth and sign, QR verify, age verification
- BankID NO: auth, backchannel auth, sign, age verification
- Freja eID: auth, backchannel auth, sign, backchannel sign, age verification
- MitID: auth, backchannel auth, sign, age verification
- FTN (Finnish Trust Network): auth, age verification
- Vipps MobilePay: auth, backchannel auth
- Documents: upload and download documents for signing
dotnet add package Identisure.Clientusing Identisure.Client;
using Identisure.Client.Models;
var client = new IdentisureClientBuilder("client_id", "client_secret")
.Environment(IdentisureEnvironment.Staging)
.Build();
var session = await client.BankIdSe.AuthAsync(new BankIdSeAuthRequest());
if (session is BankIdSePending pending)
{
Console.WriteLine($"Session ID: {pending.Id}");
var result = await client.BankIdSe.WaitForAuthAsync(pending.Id);
switch (result)
{
case BankIdSeCompleted done:
Console.WriteLine($"Authenticated: {done.Name} ({done.Ssn})");
break;
case BankIdSeFailed failed:
Console.WriteLine($"Failed: {failed.Error}");
break;
}
}Verify the X-Signature-SHA256 header against the raw request body before parsing it:
var valid = CallbackSignature.Verify(rawBody, signatureHeader, "hmac_secret");The tests use shared fixtures from a git submodule. Clone with --recurse-submodules, or run
git submodule update --init in an existing clone.
dotnet build Identisure.Client.slndotnet test Identisure.Client.slnSet the version in src/Identisure.Client/Identisure.Client.csproj and src/Identisure.Client/Transport.cs and commit. Then push a tag:
git tag v0.1.0
git push origin v0.1.0The release workflow checks that the tag matches the version, runs CI, publishes to NuGet and creates a GitHub release.
Dart, Go, TypeScript/JavaScript, Java/Kotlin, PHP, Python, Ruby, Rust, Swift