Tenduke.Client 4.0.0

dotnet add package Tenduke.Client --version 4.0.0
NuGet\Install-Package Tenduke.Client -Version 4.0.0
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="Tenduke.Client" Version="4.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Tenduke.Client --version 4.0.0
#r "nuget: Tenduke.Client, 4.0.0"
#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 Tenduke.Client as a Cake Addin
#addin nuget:?package=Tenduke.Client&version=4.0.0

// Install Tenduke.Client as a Cake Tool
#tool nuget:?package=Tenduke.Client&version=4.0.0

Client library for 10Duke Identity and Entitlement

This is the base client library, other platform specific client libraries are built on this one. See the repository README for client library listing.

This base client library can also be used directly, instead of the more specific client libraries derived from this one. The main cases for using this base client library are:

  • The application using the client library implements OAuth 2.0 authorization flow by itself, thus not needing a library that implements the OAuth flow
  • A specific client library for the desired platform is not available

Main features of this base client library are:

  • Querying user info
  • Checking and consuming licenses
  • Checking end-user permissions
  • Releasing consumed licenses

Installation

The client library is available as a NuGet package. An example for installing the client library using NuGet Package Manager:

Installation with dotnet cli

dotnet add package Tenduke.Client

Installation with NuGet PackageManager

Install-Package Tenduke.Client

Basic usage

Class Tenduke.Client.EntClient is the main implementation class that provides access to the APIs. Configuration and features of Tenduke.Client.WinForms.EntClient are introduced below.

Authentication and authorization

User authentication is outside the scope of this client implementation. For being able to call the APIs, an OAuth access token must be used.

EntClient initialization

An instance of EntClient can be created like this:

var entClient = new EntClient()
{
    OAuthConfig = myOAuthConfig,
    AuthzApiConfig = myAuthzApiConfig,
    AccessToken = myAccessToken
};

Here, +myOAuthConfig+ is an instance of +Tenduke.Client.Config.OAuthConfig+, for instance:

var myOAuthConfig = new OAuthConfig()
{
    UserInfoUri = "https://my-test-idp.10duke.net/userinfo/"
};

Here, it is sufficient to initialize only the +UserInfoUri+, and this Uri must point to an actual 10Duke Entitlement service deployment.

myAuthzApiConfig is an instance of Tenduke.Client.Config.AuthzApiConfig, for instance:

var myAuthzApiConfig = new AuthzApiConfig()
{
    EndpointUri = "https://my-test-idp.10duke.net/authz/",
    SignerKey = [Public key of 10Duke Entitlement service]
};

EndpointUri points to the authorization endpoint of the actual deployment. SignerKey is the RSA public key that is used for verifying signatures of tokens issued by the 10Duke Entitlement service. The following utility is provided for reading an RSA key from string:

var publicKey = Tenduke.Client.Util.CryptoUtil.ReadRsaPublicKey(publicKeyAsString);

And finally, myAccessToken is the access token that, acquired by completing an OAuth flow. Now, the EntClient instance is ready to be used.

Using the client to make 10Duke API calls

Example user info and license requests are given below:

User info request
var userInfo = await entClient.UserInfoApi.GetUserInfoAsync();

This call returns an object with OpenID Connect user info.

Consume license
var tokenResponse = await entClient.AuthzApi.CheckOrConsumeAsync("MyLicense", true, ResponseType.JWT);

This call returns a Tenduke.Client.EntApi.Authz.AuthorizationDecision object that describes an authorization decision, returned as a signed JWT token. The AuthorizationDecision indicates if a license lease has been granted (and a license seat has been taken), and the client application can rely on the AuthorizationDecision until the object expires. Expiration of the object is the same as expiration of the returned JWT token and expiration of the license lease.

Release license
var releaseResponse = await entClient.AuthzApi.ReleaseLicenseAsync(tokenResponse["jti"], ResponseType.JWT);

This call is used for returning a consumed lease (license seat) back to the license pool.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 is compatible.  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 (6)

Showing the top 5 NuGet packages that depend on Tenduke.Client:

Package Downloads
Tenduke.Client.Desktop

Base classes and utilities for 10Duke Identity and Entitlement client libraries for .Net desktop applications

Tenduke.Client.AspNetCore

ASP.NET client library for 10Duke Identity and Entitlement

Tenduke.Client.WPF

Package Description

Tenduke.Client.WinForms

Package Description

Tenduke.Client.WinBase

Base library for Windows based 10Duke Identity and Entitlement client libraries

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.0.0 169 3/11/2024
3.6.0 246 9/20/2023
3.4.3 3,124 6/10/2022
3.4.2 2,409 2/14/2022
3.4.0 2,143 2/11/2022
3.3.1 1,320 1/3/2022
3.3.0 266 1/3/2022
3.2.0 4,493 3/10/2021
3.1.1 939 11/30/2020
3.1.0 1,492 10/30/2020
3.0.0 1,864 4/2/2020
2.3.4 1,586 3/16/2020
2.3.3 1,527 3/12/2020
2.3.2 1,131 12/9/2019
2.3.1 1,884 12/5/2019
2.3.0 1,632 4/1/2019
2.2.2 1,585 3/19/2019
2.2.1 1,564 3/19/2019
2.2.0 1,603 2/14/2019
2.1.0 1,678 1/25/2019
2.0.4 867 1/24/2019
2.0.3 1,729 1/21/2019
2.0.2 1,382 12/4/2018
2.0.1 1,840 6/26/2018
2.0.0 2,254 5/30/2018
1.0.2 1,551 5/11/2018
1.0.1 1,351 5/9/2018

Dependency updates