NP.Lti13Platform.NameRoleProvisioningServices 1.0.0-preview.26

This is a prerelease version of NP.Lti13Platform.NameRoleProvisioningServices.
dotnet add package NP.Lti13Platform.NameRoleProvisioningServices --version 1.0.0-preview.26
                    
NuGet\Install-Package NP.Lti13Platform.NameRoleProvisioningServices -Version 1.0.0-preview.26
                    
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="NP.Lti13Platform.NameRoleProvisioningServices" Version="1.0.0-preview.26" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NP.Lti13Platform.NameRoleProvisioningServices" Version="1.0.0-preview.26" />
                    
Directory.Packages.props
<PackageReference Include="NP.Lti13Platform.NameRoleProvisioningServices" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NP.Lti13Platform.NameRoleProvisioningServices --version 1.0.0-preview.26
                    
#r "nuget: NP.Lti13Platform.NameRoleProvisioningServices, 1.0.0-preview.26"
                    
#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.
#:package NP.Lti13Platform.NameRoleProvisioningServices@1.0.0-preview.26
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NP.Lti13Platform.NameRoleProvisioningServices&version=1.0.0-preview.26&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=NP.Lti13Platform.NameRoleProvisioningServices&version=1.0.0-preview.26&prerelease
                    
Install as a Cake Tool

NP.Lti13Platform.NameRoleProvisioningServices

The IMS Name and Role Provisioning Services spec defines a way that tools can request the names and roles of members of a context. This project provides an implementation of the spec.

Features

  • Returns the members of a context
  • Supports membership filters and pagination
  • Retrieves user information and roles

Getting Started

  1. Add the nuget package to your project:

  2. Add an implementation of the INameRoleProvisioningDataService interface:

public class NameRoleProvisioningDataService: INameRoleProvisioningDataService
{
    ...
}
  1. Add the required services.
builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformNameRoleProvisioningServices<NameRoleProvisioningDataService>();
  1. Setup the routing for the LTI 1.3 platform endpoints:
app.UseLti13PlatformNameRoleProvisioningServices();

INameRoleProvisioningDataService

There is no default INameRoleProvisioningDataService implementation to allow each project to store the data how they see fit.

The INameRoleProvisioningDataService interface is used to retrieve members of a context with support for filtering by role, status, and pagination.

All of the internal services are transient and therefore the data service may be added at any scope (Transient, Scoped, Singleton).

Defaults

Routing

Default routes are provided for all endpoints. Routes can be configured when calling UseLti13PlatformNameRoleProvisioningServices().

app.UseLti13PlatformNameRoleProvisioningServices(config => {
    config.NamesAndRoleProvisioningServicesUrl = "/lti13/{deploymentId}/{contextId}/memberships"; // {deploymentId} and {contextId} are required
    return config;
});

INameRoleProvisioningConfigService

The INameRoleProvisioningConfigService interface is used to get the configuration for the name and role provisioning service. The config is used to tell tools how to request the members of a context.

There is a default implementation of the INameRoleProvisioningConfigService interface that uses configuration set up on app start. It will be configured using the IOptions pattern and configuration. The configuration path for the service is Lti13Platform:NameRoleProvisioningServices.

Examples:

{
    "Lti13Platform": {
        "NameRoleProvisioningServices": {
            "ServiceAddress": "https://<mysite>"
        }
    }
}

OR

builder.Services.Configure<ServicesConfig>(x => { });

The Default implementation can be overridden by adding a new implementation of the INameRoleProvisioningConfigService interface. This may be useful if the service URL is dynamic or needs to be determined at runtime.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformNameRoleProvisioningServices<NameRoleProvisioningDataService>()
    .WithNameRoleProvisioningConfigService<CustomConfigService>();

INameRoleProvisioningServicesMessageExtension

The INameRoleProvisioningServicesMessageExtension interface allows for adding custom extensions to name and role provisioning service messages.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformNameRoleProvisioningServices<NameRoleProvisioningDataService>()
    .WithNameRoleProvisioningServicesMessageExtension<CustomExtension>();

Configuration

ServiceAddress

The base URL used to tell tools where the service is located.


SupportMembershipDifferences Default: true

Boolean indicating if the service supports membership differences. If true, it is expected the 'asOfDate' parameter in the GetMemberships data service will be used. If historical membership is not supported, this value should be set to false.

Message Extensions

The IMS Name and Role Provisioning Services spec defines member-specific claims within LTI messages. This project provides support for accessing these member-specific claims in resource link messages. Additional extensions can be added by implementing INameRoleProvisioningServicesMessageExtension.

builder.Services
    .AddLti13PlatformCore<CoreDataService>()
    .AddPlatformNameRoleProvisioningServices<NameRoleProvisioningDataService>()
    .WithNameRoleProvisioningServicesMessageExtension<CustomMessageExtension>();
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NP.Lti13Platform.NameRoleProvisioningServices:

Package Downloads
NP.Lti13Platform

A platform implementation of the LTI 1.3 spec. Includes the Core, DeepLinking, Assignment and Grade Services, and Name and Role Provisioning Services specs.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-preview.26 44 1/14/2026
1.0.0-preview.25 143 10/27/2025
1.0.0-preview.24 135 10/24/2025
1.0.0-preview.23 89 10/19/2025
1.0.0-preview.22 81 10/19/2025
1.0.0-preview.20 71 10/19/2025
1.0.0-preview.17 141 9/23/2025
1.0.0-preview.16 159 9/23/2025