ServiceStack.Jwks.Reborn
1.0.1
dotnet add package ServiceStack.Jwks.Reborn --version 1.0.1
NuGet\Install-Package ServiceStack.Jwks.Reborn -Version 1.0.1
<PackageReference Include="ServiceStack.Jwks.Reborn" Version="1.0.1" />
<PackageVersion Include="ServiceStack.Jwks.Reborn" Version="1.0.1" />
<PackageReference Include="ServiceStack.Jwks.Reborn" />
paket add ServiceStack.Jwks.Reborn --version 1.0.1
#r "nuget: ServiceStack.Jwks.Reborn, 1.0.1"
#addin nuget:?package=ServiceStack.Jwks.Reborn&version=1.0.1
#tool nuget:?package=ServiceStack.Jwks.Reborn&version=1.0.1
ServiceStack.Jwks
A ServiceStack v5 plugin to expose and consume Json Web Key sets using a subset of the OpenID Connect discovery document.
Potential use cases:
- simplify JSON Web token key rotation between ServiceStack services
- protect a stateless ServiceStack service with a third-party authentication service that supports Open ID connect - Azure AD, Auth0, Okta, ...
- protect an ASP.NET Core app with the Microsoft.AspNetCore.Authentication.JwtBearer middleware using the OpenID discovery document from a ServiceStack Authentication service.
Getting Started
Add the ServiceStack.Jwks.Reborn
Nuget package:
dotnet add package ServiceStack.Jwks.Reborn --version 1.0.0
Authentication service
Register JwksFeature
in the AuthFeature
:
// existing Auth feature using the JwtAuthProvider
var authFeature = new AuthFeature(...);
authFeature.RegisterPlugins.Add(new JwksFeature());
The Discovery document is now accessible at /openid-config
and the JSON Web key set at /jwks
.
Protected ServiceStack service
Register JwksFeature
in the AuthFeature
:
// existing Auth feature using the JwtAuthProviderReader
var authFeature = new AuthFeature(...);
authFeature.RegisterPlugins.Add(new JwksFeature() {
OpenIdDiscoveryUrl = "https://myauthapi.example.com/openid-config"
// or JwksUrl = "https://myauthapi.example.com/jwks"
});
Protected ASP.NET Core service
public class StartUp {
public void ConfigureServices(IServiceCollection services) {
...
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options => {
// must match the configured audience on the ServiceStack Auth service
options.Audience = "my-audience";
// ServiceStack Auth service discovery url
options.MetadataAddress = "https://myauthapi.example.com/openid-config"
// optional to map the Identity Name property to the `name` claim used by ServiceStack.
options.TokenValidationParameters.NameClaimType = "name";
});
}
public void Configure(IApplicationBuilder app) {
...
// authenticate the user in the presence of a JWT Bearer token
app.UseAuthentication();
...
}
}
Notes
Supported algorithms are the Asymetric RSA algorithms (RS256, RS384, RS512).
The metadata isn't technically valid according to OpenID connect metadata specifications.
ServiceStack isn't an OpenID provider and the metadata is only used to expose information about the JWTAuthProvider
.
Product | Versions 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 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. net9.0 was computed. 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. |
.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. |
-
.NETStandard 2.0
- ServiceStack (>= 8.6.0)
-
net6.0
- ServiceStack (>= 8.6.0)
-
net8.0
- ServiceStack (>= 8.6.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.