Geonorge.AuthLib.Common
2.0.0-alpha4
dotnet add package Geonorge.AuthLib.Common --version 2.0.0-alpha4
NuGet\Install-Package Geonorge.AuthLib.Common -Version 2.0.0-alpha4
<PackageReference Include="Geonorge.AuthLib.Common" Version="2.0.0-alpha4" />
<PackageVersion Include="Geonorge.AuthLib.Common" Version="2.0.0-alpha4" />
<PackageReference Include="Geonorge.AuthLib.Common" />
paket add Geonorge.AuthLib.Common --version 2.0.0-alpha4
#r "nuget: Geonorge.AuthLib.Common, 2.0.0-alpha4"
#:package Geonorge.AuthLib.Common@2.0.0-alpha4
#addin nuget:?package=Geonorge.AuthLib.Common&version=2.0.0-alpha4&prerelease
#tool nuget:?package=Geonorge.AuthLib.Common&version=2.0.0-alpha4&prerelease
Geonorge.AuthLib
Autentisering og autoriseringsbibliotek for applikasjoner i Geonorge
Biblioteket har to deler:
- Geonorge.AuthLib.Common
- Felles logikk og hjelpeklasser for uthenting av brukerinformasjon fra BaatAuthz-apiet.
- Geonorge.AuthLib.NetFull
- Gjenbrukbar konfigurasjon for .net framework applikasjoner
Bruk av biblioteket i en .net framework applikasjon
De fleste av Geonorges applikasjoner benytter Autofac for dependency injection. Derfor benytter også dette biblioteket Autofac.
Installer disse pakkene i prosjektet:
Install-Package Geonorge.AuthLib.NetFull
Install-Package Microsoft.Owin.Host.SystemWeb
Install-Package Autofac.Mvc5.Owin
Geonorge.AuthLib.NetFull ligger tilgjengelig som en nuget-pakke på byggeserveren til Geonorge.
Opprett en Startup.cs
I prosjektrota må det være en Startup.cs som konfigurere Autofac og Geonorge.AuthLib.
Eksempel fra MetadataEditoren:
using Autofac;
using Geonorge.AuthLib.NetFull;
using Kartverket.MetadataEditor.App_Start;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(Kartverket.MetadataEditor.Startup))]
namespace Kartverket.MetadataEditor
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Use Autofac as an Owin middleware
var container = DependencyConfig.Configure(new ContainerBuilder());
app.UseAutofacMiddleware(container);
app.UseAutofacMvc(); // requires Autofac.Mvc5.Owin nuget package installed
app.UseGeonorgeAuthentication();
}
}
}
Det er viktig at Autofac settes opp som Owin Middleware. Dette gjør vi for å kunne få tak i tjenesteklasser i løpet av autentiseringen av brukeren.
Konfigurasjon av Autofac
Autofac må ha beskjed om hvordan klassene til dette biblioteket skal instansieres. Dette gjøres ved å registrere en egen Autofac-modul i oppstarten.
builder.RegisterModule<GeonorgeAuthenticationModule>();
builder
er et objekt av typen Autofac.ContainerBuilder. I veldig mange av Geonorge-prosjektene har vi en egen DependencyConfig-klasse. Linjen over vil vi ofte plassere i denne klassen.
Tilrettelegge for bruk av netstandard2.0
Ordinære .net framework applikasjoner kan få en feilmelding om at System.Object is not found. Da må du tilrettelegge for at appen kan benytte netstandard2.0. Dette gjøres ved å legge til følgende i web.config:
<system.web>
...
<compilation debug="true" targetFramework="4.7.2">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
...
</system.web>
Konfigurasjonsvariabler
Følgende konfigurasjonsvariabler må være definert i appsettings.config (evt. appsettings.json for .NET 8+) i applikasjonen:
<add key="auth:oidc:ClientId" value="" />
<add key="auth:oidc:ClientSecret" value="" />
<add key="auth:oidc:Authority" value="" />
<add key="auth:oidc:Issuer" value="" />
<add key="auth:oidc:IntrospectionUrl" value="" />
<add key="auth:oidc:RedirectUri" value="https://xxxx/signin-oidc" />
<add key="auth:oidc:PostLogoutRedirectUri" value="https://xxxx/signout-callback-oidc" />
<add key="auth:oidc:MetadataAddress" value="" />
<add key="auth:oidc:BaatAuthzApiUrl" value=""/>
<add key="auth:oidc:BaatAuthzApiCredentials" value=""/>
Oppsett av innlogging og utlogging
Vi må deretter sette opp Controller-metoder for innlogging, utlogging og en callback for når logout-operasjonen har blitt gjennomført.
public void SignIn()
{
var redirectUrl = Url.Action(nameof(HomeController.Index), "Home");
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = redirectUrl },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
public void SignOut()
{
var redirectUri = WebConfigurationManager.AppSettings["GeoID:PostLogoutRedirectUri"];
HttpContext.GetOwinContext().Authentication.SignOut(
new AuthenticationProperties {RedirectUri = redirectUri},
OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType);
}
/// <summary>
/// This is the action responding to /signout-callback-oidc route after logout at the identity provider
/// </summary>
/// <returns></returns>
public ActionResult SignOutCallback()
{
return RedirectToAction(nameof(RegistersController.Index), "Registers");
}
For å få utlogging til å fungere må det konfigureres en signout-callback og dette har vi standardisert til å være ruten /signout-callback-oidc på samme måte som for innlogging (/signin-callback-oidc). Denne ruten for innlogging blir levert av Openid Connect biblioteket til Microsoft.
Eksempel på konfigurert callback rute i Registeret:
RouteConfig.cs
routes.MapRoute("OIDC-callback-signout", "signout-callback-oidc", new { controller = "Home", action = "SignOutCallback"});
Hjelpeklasser
ClaimsPrincipal
Biblioteket inneholder noen utvidelser av ClaimsPrincipal-klassen for å gjøre uthenting av Claims enklere.
Eksempel:
string username = ClaimsPrincipal.Current.GetUsername();
string organization = ClaimsPrincipal.Current.GetOrganizationName();
Se eksempel på bruk av ClaimsPrincipal og ClaimsPrincipalUtility i MetadataEditoren. BaseController-klassen benytter flere av disse for å gi gode metoder som kan benyttes av de ordinære Controller-klassene.
GeonorgeRoles
Geonorge.AuthLib.Common.GenorgeRoles inneholder konstanter med rollenavn vi mottar fra Baat. Disse skal benyttes istedenfor "magiske strenger" rundt om i de ulike applikasjonene.
Geonorge.AuthLib.Common.GeonorgeClaims inneholder konstanter med navn på claims som ligger på brukeren. Benytt disse dersom du må hente ut claims - men vurder om ikke det er en hjelpemetode som kan benyttes isteden, evt implementer en ny hjelpemetode.
Product | Versions 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 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 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. |
.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
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 2.3.0)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.14.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Geonorge.AuthLib.Common:
Package | Downloads |
---|---|
Geonorge.AuthLib.NetFull
AuthN/AuthZ library for .NET Framework Geonorge Components. |
|
Geonorge.AuthLib.NetCore
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
2.0.0-alpha4 | 137 | 9/9/2025 |
2.0.0-alpha3 | 115 | 9/9/2025 |
2.0.0-alpha2 | 121 | 9/8/2025 |
2.0.0-alpha1 | 161 | 6/26/2025 |
Merged content from Geonorge.AuthLib.NetCore