Sufficit.Identity.Core 1.26.902.336

There is a newer version of this package available.
See the version list below for details.
dotnet add package Sufficit.Identity.Core --version 1.26.902.336
                    
NuGet\Install-Package Sufficit.Identity.Core -Version 1.26.902.336
                    
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="Sufficit.Identity.Core" Version="1.26.902.336" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Sufficit.Identity.Core" Version="1.26.902.336" />
                    
Directory.Packages.props
<PackageReference Include="Sufficit.Identity.Core" />
                    
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 Sufficit.Identity.Core --version 1.26.902.336
                    
#r "nuget: Sufficit.Identity.Core, 1.26.902.336"
                    
#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 Sufficit.Identity.Core@1.26.902.336
                    
#: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=Sufficit.Identity.Core&version=1.26.902.336
                    
Install as a Cake Addin
#tool nuget:?package=Sufficit.Identity.Core&version=1.26.902.336
                    
Install as a Cake Tool

Sufficit Identity Core

Shared contracts for authentication and authorization across every Sufficit product. This library is the single place where the vocabulary lives, so that a telephony screen, a finance report and an AI agent all answer the question "may this principal do this?" the same way.

Targets netstandard2.0 through net10.0, which is why it can be referenced from the .NET Framework 4.8 web application and from the newest services alike.

Why this is public

Security rests on the secrecy of keys, not of design — Kerckhoffs's principle, restated by Shannon as "the enemy knows the system". The OpenID Connect discovery document and the signing keys of the identity service are public by necessity; an integrator, or an attacker, can already read how the protocol works. What this documentation adds is a correct integration, not an attack surface.

The line we hold is not design versus no design. It is how it works (published) versus what we run (not published). Host names, addresses, ports, database names, real tenant identifiers and account identifiers belong to the operational inventory and never appear here. Every identifier in these documents is a deliberately fake example.

Documentation

Start with the concepts; the rest assumes that vocabulary.

Document What it answers
Concepts What a scope, a role and an entitlement each decide, and why they are not three levels of the same thing
Entitlements The format, how identity and context are compared, and what makes a value invalid
Entitlement catalogue Every entitlement, grouped by feature
Roles Coarse grouping, hierarchy, and where expansion happens
Integration How a new application connects, step by step
Enrichment Where authorization data comes from, caching, revalidation and revocation
Errors What to do when a decision cannot be made
Versioning How the contract changes without breaking consumers
Decisions Why the design is the way it is

The shape of an authorization decision

Three questions, three different answers:

  • Scope — what the application may ask for. It belongs to the OAuth client, not to the person, which is why it appears on a consent screen.
  • Role — a coarse grouping of a person inside a context. Drives navigation: which screens and links exist at all.
  • Entitlement — a specific permission inside a specific context. Drives actions: which button is enabled, whether a save is allowed.

Roles keep granting from becoming an endless list. Entitlements keep each product free to define its own vocabulary. The two exist precisely because one compensates for the other.

Reading a decision in code

// May this principal read phone calls in this context?
if (principal.HasDirective<PhoneCallsDirective>(contextId))
{
    // ...
}

The context is always explicit. There is no ambient "current company": a principal may hold different permissions in different contexts at the same time, and a screen that shows several contexts at once is a normal case, not an exception.

Naming. The published vocabulary is entitlement, following RFC 9068 §2.2.3.2 and the SCIM semantics it borrows from (RFC 7643 §4.1.2). The types in this library are still named *Directive; see the decision record for why the rename is staged rather than immediate.

Contributing

Documentation and identifiers are written in English. The team works from several places, and a shared vocabulary is worth more than a familiar one.

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 is compatible.  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.  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 is compatible.  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. 
.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 Sufficit.Identity.Core:

Package Downloads
Sufficit.Blazor

Package Description

Sufficit.Client

EndPoints API Client

Sufficit.Net.Http

Package Description

Sufficit.Telephony.EventsPanel

Package Description

Sufficit.Identity.Client

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.26.909.1815 29 9/9/2026
1.26.906.1634 110 9/6/2026
1.26.903.1853 140 9/3/2026
1.26.903.1811 82 9/3/2026
1.26.902.1525 158 9/2/2026
1.26.902.357 80 9/2/2026
1.26.902.351 81 9/2/2026
1.26.902.336 86 9/2/2026
1.26.818.1412 135 8/18/2026
1.26.817.2216 120 8/17/2026
1.26.812.139 456 8/12/2026
1.26.810.26 144 8/10/2026
1.26.809.2352 99 8/9/2026
1.26.805.1819 347 8/5/2026
1.26.803.2 281 8/3/2026
1.26.731.1513 141 7/31/2026
1.26.604.1726 4,471 6/4/2026
1.26.508.358 275 5/8/2026
1.26.508.345 122 5/8/2026
1.26.508.336 128 5/8/2026
Loading failed