egov-moldova / AGE.AspNetCore.MPass.Saml

2 stars 2 forks source link
authentication egov mpass saml

MPass SAML Authentication

This package is intended for Service Provider integration built on ASP.NET Core 2.0+ with MPass using SAML v2.0 protocol and format for authentication.

Getting Started

Please go through the following instructions to integrate your project with MPass.

Prerequisites

Before being able to integrate with MPass, a Service Provider, including its certificate, must be registered accordingly in MPass. MPass accepts certificates issued by STISC.

Installing

Install the following package from NuGet

Install-Package AGE.AspNetCore.MPass.Saml

Then follow the instructions from Configuration and Usage sections below.

Configuration

Add the following configuration section to your appsettings.json:

{
    ...
    "MPassSamlOptions": {
        "SamlRequestIssuer": "https://sampleservice.md",
        "ServiceCertificatePath": "Files\\Certificates\\sampleservice.md.pfx",
        "ServiceCertificatePassword": "yourpfxpassword",
        "IdentityProviderCertificatePath": "Files\\Certificates\\testmpass.gov.md.cer",
        "SamlMessageTimeout": "00:10:00",
        "SamlLoginDestination": "https://testmpass.gov.md/login/saml",
        "SamlLogoutDestination": "https://testmpass.gov.md/logout/saml",
        "ServiceRootUrl": "https://localhost:5000"
    }
    ...
}

where ServiceRootUrl is the base path of your published service.

Please note that your Service must be published using https protocol.

Usage

Add the following code snippet to your Startup.ConfigureServices method:

services.Configure<MPassSamlOptions>(MPassSamlDefaults.AuthenticationScheme, Configuration.GetSection("MPassSamlOptions"));

services.AddAuthentication(sharedOptions =>
{
    sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    sharedOptions.DefaultChallengeScheme = MPassSamlDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
    options.Cookie.Name = "auth";
    options.Cookie.SameSite = SameSiteMode.None;
})
.AddMPassSaml();

In your Startup.Configure add the Authentication Middleware.

app.UseAuthentication();