WojtJ.Kinde.IdentityAuthentication
1.0.12
Clinically.Kinde.Authentication
Additional DetailsThis package has been moved to a new repository and tidied up - strongly suggest changing to the new package. Usage remains the same.
dotnet add package WojtJ.Kinde.IdentityAuthentication --version 1.0.12
NuGet\Install-Package WojtJ.Kinde.IdentityAuthentication -Version 1.0.12
<PackageReference Include="WojtJ.Kinde.IdentityAuthentication" Version="1.0.12" />
<PackageVersion Include="WojtJ.Kinde.IdentityAuthentication" Version="1.0.12" />
<PackageReference Include="WojtJ.Kinde.IdentityAuthentication" />
paket add WojtJ.Kinde.IdentityAuthentication --version 1.0.12
#r "nuget: WojtJ.Kinde.IdentityAuthentication, 1.0.12"
#:package WojtJ.Kinde.IdentityAuthentication@1.0.12
#addin nuget:?package=WojtJ.Kinde.IdentityAuthentication&version=1.0.12
#tool nuget:?package=WojtJ.Kinde.IdentityAuthentication&version=1.0.12
Integrating Kinde Auth with .NET8 Blazor Server Apps
This is a quick sample of integrating Kinde Authentication with Blazor apps using AspNet core identity
Either fork the repo and use it, or add the following NuGet package:
WojtJ.Kinde.IdentityAuthentication
It needs lots of improvements, but is a reasonable starting point.
The following needs to be in your appSettings.json:
"Kinde": {
"Authority": "<From Kinde>",
"ClientId": "<From Kinde>",
"ClientSecret": "<From Kinde>",
"ManagementApiClientId": "<From Kinde>",
"ManagementApiClientSecret": "<From Kinde>",
"SignedOutRedirectUri": "https://localhost:5001/signout-callback-oidc",
"JwtAudience": "<From Kinde - Audience for API, if using JWT Bearer Auth in addition to Identity>",
},
"AppConfig": {
"BaseUrl": "https://localhost:5001"
}
You then need the following in your Program.cs (I will soon add something so you can just add the section):
builder.Services.AddKindeAuthentication(opt =>
{
opt.UseJwkTokenValidation = false; // default to false
opt.UseMemoryCacheTicketStore = false; // default to false
});
Roles
You can use the standard Authorize attribute:
[Authorize(Roles = "Admin")]
Permissions
In order to add authorization policies for your Kinde permissions:
builder.Services
.AddAuthorizationBuilder()
.AddKindePermissionPolicies<Permissions>();
Then create a Permissions class that contains all the Kinde permissions you want to use:
public class Permissions
{
public const string MyPermissionName = "myPermissionNameInKinde";
}
Then you can use the permissions in your controllers or Razor pages:
[Authorize(Policy = Permissions.MyPermissionName)]
Notes
- You need to go to the Tokens section of your app, and enable the Roles and Email claims in the access token.
- In order to access the management API (e.g. to add users programmatially etc), inject
KindeManagementClientinto your services. Note you will need a separate M2M app in Kinde for this, with access to the Management API. - You can also inject
KindeUserManagerinstead of the standardUserManagerto get access to Kinde-specific methods. - Inject
BlazorServerUserAccessorto get access to the current user in your Blazor server-rendered components.
I've only just recently worked out how to tie all this together, so some bits may not be entirely required etc. Take this as a proof of concept at the moment 😃
To Do List:
- Feature flags not currently implemented (but will work the same way as Permissions)
- Nuget package
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. 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. |
-
net8.0
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 8.0.3)
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 8.0.3)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.3.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.