KS.Fiks.Maskinporten.Client 1.1.10

dotnet add package KS.Fiks.Maskinporten.Client --version 1.1.10
NuGet\Install-Package KS.Fiks.Maskinporten.Client -Version 1.1.10
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="KS.Fiks.Maskinporten.Client" Version="1.1.10" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add KS.Fiks.Maskinporten.Client --version 1.1.10
#r "nuget: KS.Fiks.Maskinporten.Client, 1.1.10"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install KS.Fiks.Maskinporten.Client as a Cake Addin
#addin nuget:?package=KS.Fiks.Maskinporten.Client&version=1.1.10

// Install KS.Fiks.Maskinporten.Client as a Cake Tool
#tool nuget:?package=KS.Fiks.Maskinporten.Client&version=1.1.10

fiks-maskinporten-dotnet

MIT license Nuget GitHub issues

About this library

This is a .NET library for Maskinporten authentication and authorization. There is also a similar version available for Java here

Integrity

The nuget package is signed with a KS certificate in our build process, stored securely in a safe build environment. The package assemblies are also strong-named.

Installation

Install KS.Fiks.Maskinporten.Client nuget package in your .net project.

Example

Setup configuration

Using factory for TEST and PROD environments
// For TEST
var maskinportenConfigTest = MaskinportenClientConfigurationFactory.CreateTestConfiguration("test_issuer", testCertificate);

// For PROD
var maskinportenConfigProd = MaskinportenClientConfigurationFactory.CreateProdConfiguration("prod_issuer", certificate);

// DEPRECATED - For TEST (ver2)
var maskinportenConfigVer2 = MaskinportenClientConfigurationFactory.CreateVer2Configuration("ver2_issuer", testCertificate);
Complete configuration
Test environment
var maskinportenConfig = new MaskinportenClientConfiguration(
    audience: @"https://test.maskinporten.no/", // Maskinporten audience path
    tokenEndpoint: @"https://test.maskinporten.no/token", // Maskinporten token path
    issuer: @"issuer",  // Issuer name, heter nå Integrasjonens identifikator i selvbetjeningsløsningen til DigDir
    numberOfSecondsLeftBeforeExpire: 10, // The token will be refreshed 10 seconds before it expires
    certificate: /* virksomhetssertifikat as a X509Certificate2  */,
    consumerOrg: /* optional value. Sets header consumer_org */);
Test environment - ver2 (deprecated)
var maskinportenConfig = new MaskinportenClientConfiguration(
    audience: @"https://ver2.maskinporten.no/", // Maskinporten audience path
    tokenEndpoint: @"https://ver2.maskinporten.no/token", // Maskinporten token path
    issuer: @"issuer",  // Issuer name, heter nå Integrasjonens identifikator i selvbetjeningsløsningen til DigDir
    numberOfSecondsLeftBeforeExpire: 10, // The token will be refreshed 10 seconds before it expires
    certificate: /* virksomhetssertifikat as a X509Certificate2  */,
    consumerOrg: /* optional value. Sets header consumer_org */);

DigDir maintains a list of well-know endpoints and configuration for the available environments

Create instance of MaskinportenClient

var maskinportenClient = new MaskinportenClient(maskinportenConfig);

Get access token

var scope = "ks:fiks"; // Scope for access token
var accessToken = await maskinportenClient.GetAccessToken(scope);

Get delegated access token

var scope = "ks:fiks"; // Scope for access token
var consumerOrgNo = ...; // Official 9 digit organization number for an organization that has delegated access to you in ALTINN
var accessToken = await maskinportenClient.GetDelegatedAccessToken(consumerOrgNo, scope);

For more information on this feature, check the delegation documentation at DigDir

Get on behalf of access token

This is a feature with limited usecase

var scope = "ks:fiks"; // Scope for access token
var consumerOrgNo = ...; // Official 9 digit organization number for an organization that has delegated access to you in ALTINN
var accessToken = await maskinportenClient.GetOnBehalfOfAccessToken(consumerOrgNo, scope);

For more information on this feature, check the onbehalfof documentation at DigDir

Please note that as stated in the documentation at DigDir, "Det gir ingen mening å bruke onbehalfof for Maskinporten-integrasjoner", means that for most cases it is not usable and is planned for removal. When it is removed this feature will be removed from this client too.

Send request using access token

var httpClient = new HttpClient();
using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, /* api uri */))
{
  // Set authorization header with maskinporten access token
  requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken.Token);
    
  /* Set other headers. Integration id and password etc.*/ 
  
  // Send message
  var response = await httpClient.SendAsync(requestMessage);

  /* Handle response */
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on KS.Fiks.Maskinporten.Client:

Package Downloads
KS.Fiks.IO.Client

Package Description

KS.Fiks.IO.Send.Client

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.10 5,324 1/15/2024
1.1.9 9,542 11/10/2023
1.1.8 425 11/7/2023
1.1.7 13,907 8/15/2023
1.1.6 554 5/31/2023
1.1.5 40,877 1/23/2023
1.1.4 509 1/23/2023
1.1.3 3,406 11/3/2022
1.1.2 13,728 7/1/2022
1.1.1 28,024 12/21/2021
1.1.0 272 12/21/2021
1.0.7 26,753 5/10/2021
1.0.6 1,656 11/13/2020
1.0.5 3,158 11/9/2020
1.0.4 432 11/9/2020
1.0.3 612 9/30/2020
1.0.2 549 8/20/2020
1.0.1 536 6/29/2020
1.0.0 6,849 5/6/2019
0.0.6 604 5/6/2019