Konfigurera SAML Single Sign-On (SSO) i ASP.NET Core Decoupled Application
Översikt
Den här guiden innehåller detaljerade steg för att konfigurera SAML Single Sign-On (SSO) i en ASP.NET Core-applikation med frikopplad arkitektur med valfri SAML-kompatibel identitetsleverantör (IdP). Backend-systemet (ASP.NET Core) hanterar SSO-autentisering, genererar en JWT-token och exponerar den säkert för valfritt frontend-system (React, Angular, Vue, etc.).
Plattformssupport: ASP.NET Core SAML-mellanprogramvaran stöder ASP.NET Core 2.0 och senare. Den stöder alla ASP.NET Core-plattformar, inklusive Windows, Linux och macOS.
Förutsättningar: Ladda ner och installation
- Version .NET 5 och senare
- Version .NET Core 2.1 och .NET Core 3.1
Om du får CORS-problem Lägg till tjänsten och policyn nedan när du gör API-anrop.
builder.Services.AddCors(options =>
{
options.AddPolicy("<policy-name>",policy =>
{
policy.WithOrigins("<your-origin>",policy)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
});
//Add this in the middleware section
app.UseCors("<policy-name>");
Konfigurationssteg
Steg-för-steg-guide för ASP.NET Core SAML SSO med din identitetsleverantör.
1. Gå till instrumentpanelen för .NET SAML-pluginet
- Efter integreringen öppnar du din webbläsare och bläddrar i anslutningspanelen med webbadressen nedan:
http(s)<your-dotnet-application-base-url>?ssoaction=config
- Om registreringssidan eller inloggningssidan dyker upp har du lagt till miniOrange SAML SSO-mellanprogramvaran i din applikation.
- Registrera dig eller logga in med ditt konto genom att klicka på Registrera för att konfigurera mellanvaran.
2. Konfigurera din identitetsleverantör
- Enligt plugin Settings På fliken väljer du din identitetsleverantör från listan som visas.
Det finns två sätt som beskrivs nedan med vilka du kan få SAML SP-metadata att konfigurera på din identitetsleverantör.
A] Använda SAML-metadata-URL eller metadatafil
- I Menyn för plugininställningar, leta efter Inställningar för tjänsteleverantör. Under det kan du hitta metadata-URLen samt möjligheten att ladda ner SAML-metadata.
- Kopiera metadata-URL eller ladda ned metadatafilen för att konfigurera densamma på din identitetsleverantör.
- Du kan hänvisa till skärmdumpen nedan:
B] Ladda upp metadata manuellt
- Från Inställningar för tjänsteleverantör avsnitt, kan du manuellt kopiera tjänsteleverantörens metadata som SP Entity ID, ACS URL, Single Logout URL och dela den med din identitetsleverantör för konfiguration.
- Du kan hänvisa till skärmdumpen nedan:
3. Konfigurera ASP.NET Core SAML Middleware som tjänsteleverantör
Det finns två sätt som beskrivs nedan med vilka du kan konfigurera din SAML Identity Provider-metadata i mellanvaran.
A] Ladda upp metadata med knappen Ladda upp IDP-metadata:
- Om din identitetsleverantör har försett dig med metadata-URL:en eller metadatafilen (endast .xml-format) kan du helt enkelt konfigurera identitetsleverantörens metadata i mellanprogramvaran med hjälp av Ladda upp IDP-metadata alternativ.
- Kopiera metadata-URL eller ladda ned metadatafilen för att konfigurera densamma på din identitetsleverantör.
- Du kan hänvisa till skärmdumpen nedan:
- Du kan välja vilket som helst av alternativen enligt det metadataformat du har tillgängligt.
B] Konfigurera identitetsleverantörens metadata manuellt:
- Efter att ha konfigurerat din Identitetsleverantör, det kommer att förse dig med IDP Entity ID, IDP Single Sign On URL och SAML X509-certifikat fält respektive.
- Klicka Spara för att spara dina IDP-uppgifter.
4. Testa SAML SSO
- Klicka på Testkonfiguration knappen för att testa om SAML-konfigurationen du har gjort är korrekt.
- Skärmdumpen nedan visar ett lyckat resultat. Klicka på SSO-integration för att fortsätta med SSO-integrationen.
- Om du upplever något fel i middleware-änden kommer du att visas med fönstret som liknar nedan.
- För att felsöka felet kan du följa stegen nedan:
- Enligt felsöka fliken, aktivera växeln för att ta emot pluginloggarna.
- När det är aktiverat kan du hämta plugin-loggar genom att navigera till plugin Settings fliken och klicka på Testkonfiguration.
- ladda ner loggfil från felsöka fliken för att se vad som gick fel.
- Du kan dela loggfil med oss kl aspnetsupport@xecurify.com och vårt team kommer att kontakta dig för att lösa ditt problem.
5. Attributmappning
- Efter att ha testat konfigurationen, mappa dina applikationsattribut med attributen Identity Provider (IdP).
- Obs: Alla mappade attribut lagras i sessionen så att du kan komma åt dem i din applikation.
6. Integrationskod
- Dessa steg låter dig hämta SSO-användarinformationen i din ansökan i form av användaranspråk.
- Obs: Denna testversion av mellanprogramvaran stöder endast användarinformation i anspråk, hämtning av användarinformation i sessioner och rubriker är tillgängligt i premium-pluginet.
-
Skapa en GET-slutpunkt på .NET-sidan för att returnera JWT-token efter inloggning.
Obs: Om du har en metod för att skapa en JWT behöver du bara välja anspråken från .NET-cookien.
Nedan följer koden för din referens:
[HttpGet("gettoken")]
public string GetToken()
{
if(User.Identity!=null && User.Identity.IsAuthenticated)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
("Your-JWT-secret-key"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var identity = (ClaimsIdentity)User.Identity;
var claims = identity.Claims;
var token = new JwtSecurityToken(
issuer:"<issuer-name>",
audience:"<audience>",
claims:claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
return null;
}
7. Lägg till inloggningsknapp
- Hök på Välj Åtgärder och klicka på Kopiera SSO-länk.
- Använd följande URL som en länk i applikationen där du vill utföra SSO:
https://<application-url>?ssoaction=login&appid=<app-id>
- Efter inloggning kommer du att omdirigeras tillbaka till din frontend-applikation, då kommer du att bli tvungen att göra en API-anrop att få token och användarinformation.
- Nedan följer exempelkoden du kan använda för att göra API-anropet till token endpoint för att hämta token från frontend-sidan.
fetch("https://<backend-api-baseurl>/api/gettoken", {
method: "GET",
})
.then((response) => {
//here you will receive the jwt token and the user details
console.log(response);
});
8. Testintegration
- Starta din ASP.NET Core Web API-applikation
- Starta din frontend-applikation
- Från frontend-applikationen klickar du på SSO -inloggning knappen du har lagt till
- Efter SAML-inloggning, Du kommer att omdirigeras tillbaka till din frontend-applikation. Vid det här laget anropar din frontend-applikation /api/gettoken slutpunkten, som returnerar token och användaruppgifterna. Du kan använda JWT-token för att göra dina ytterligare API-anrop.
Obs: Om du använder attributet Authorize i API:et för tokenvalidering måste du ange autentiseringspolicyn eftersom vi nu har flera policyer registrerade.
För JWT-användning: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
Relaterade artiklar
Hör av dig
Hör av dig till oss på aspnetsupport@xecurify.com, och vårt team hjälper dig att konfigurera ASP.NET Core SAML SSO. Vårt team hjälper dig att välja den bästa lösningen/planen utifrån dina behov.
