Identisure C# / .NET Client

NuGet version Documentation MIT license

API client for the Identisure REST API.

Documentation: identisure.github.io/api-client-csharp

Requirements

.NET 8 or later.

Supported providers

  • 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

Installation

dotnet add package Identisure.Client

Usage

using 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;
    }
}

Verifying callbacks

Verify the X-Signature-SHA256 header against the raw request body before parsing it:

var valid = CallbackSignature.Verify(rawBody, signatureHeader, "hmac_secret");

Development

Prerequisites

The tests use shared fixtures from a git submodule. Clone with --recurse-submodules, or run git submodule update --init in an existing clone.

Build

dotnet build Identisure.Client.sln

Test

dotnet test Identisure.Client.sln

Release

Set 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.0

The release workflow checks that the tag matches the version, runs CI, publishes to NuGet and creates a GitHub release.

Other languages

Dart, Go, TypeScript/JavaScript, Java/Kotlin, PHP, Python, Ruby, Rust, Swift