ASP.NET Core SAML Single Sign-On (SSO)
middleware gives the ability to enable SAML Single Sign-On for your ASP.NET core
applications. Using Single Sign-On you can use only one password to access
your ASP.NET core application and services. Our middleware is compatible with all
the SAML compliant Identity providers. Here we will go through a step-by-step
guide to configure Single Sign-On (SSO) between ASP.NET Core and ADFS
considering ADFS as IdP. To know more about the features we provide for
ASP.NET Core SSO, click
here.
Platform Support: The ASP.NET Core SAML middleware supports ASP.NET
Core 2.0 and above. It supports all the ASP.NET Core platforms, including
Windows, Linux and macOS.
Pre-requisites: Download And Installation
Note: To integrate the miniOrange ASP.NET SAML SSO middleware in your application, you will be required to add the below namespaces, services and middleware in your project (marked in green), below here is a sample example
using miniOrange.saml;
using System.Reflection;
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration {get;}
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddminiOrangeServices(Assembly.GetExecutingAssembly());
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseStaticFiles();
app.UseminiOrangeSAMLSSOMiddleware();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
using miniOrange.saml;
using System.Reflection;
var builder=WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddminiOrangeServices(Assembly.GetExecutingAssembly());
var app = builder.Build();
if(!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseStaticFiles();
app.UseminiOrangeSAMLSSOMiddleware();
app.Run();
Steps to configure ASP.NET Core Single Sign-On (SSO) using ADFS as IDP
1. Add middleware on ASP.NET Core application
-
After integration, open your browser and browse the middleware dashboard with
the URL below:
https://<asp-net-middleware-base-url>/?ssoaction=config
-
If the registration page or login page pops up, you have successfully added
the miniOrange ASP.NET SAML SSO middleware to your
application.
-
Register or log in with your account by clicking the Register button
to configure the middleware.
2. Configure ADFS as Identity Provider
-
Under the Plugin Settings tab, select ADFS as your
identity provider from the list shown.
There are two ways detailed below with which you can get the SAML SP
metadata to configure onto your identity provider end.
A] Using SAML metadata URL or metadata file:
-
In the Plugin Settings menu, look for
Service Provider Settings. Under that, you can find the metadata
URL as well as the option to download the SAML metadata.
-
Copy metadata URL or download the metadata file to configure the same on
your identity provider end.
- You may refer to the screenshot below:
B] Uploading metadata manually:
-
From the Service Provider Settings section, you can manually copy
the service provider metadata like
SP Entity ID, ACS URL, Single Logout URL
and share it with your identity provider for configuration.
- You may refer to the screenshot below:
-
First, search for ADFS Management application on your ADFS
server.
-
In AD FS Management, select Relying Party Trust and click on
Add Relying Party Trust.
-
Select Claims aware from the Relying Party Trust Wizard and click
on Start button.
-
In Select Data Source, select the data source for adding a relying party
trust.
-
Navigate to Service Provider Metadata section of the ASP.NET
SAML middleware to get the endpoints to configure Service Provider
manually.
-
In Add Relying Party Trust Wizard select option
Enter data about the relying party manually and click on
Next.
Specify Display Name
- Enter Display Name and Click Next.
Configure Certificate (Premium feature)
-
Download the certificate from Service Provider Metadata Tab.
- Upload the certificate and click on Next.
Configure URL
-
Select
Enable support for the SAML 2.0 WebSSO protocol option and
enter ACS URLfrom the plugin's
Service Provider Metadata Tab.
- Click on Next.
Configure Identifiers
-
In the Relying party trust identifier, add the
SP-EntityID / Issuer from the plugin's
Service Provider Metadata tab.
Choose Access
Control Policy
-
Select Permit everyone as an Access Control Policy and click on
Next.
Ready to Add
Trust
-
In Ready to Add Trust click on Next and then
Close.
Edit Claim
Issuance Policy
-
In the list of Relying Party Trust, select the application you
created and click on Edit Claim Issuance Policy.
- In Issuance Transform Rule tab click on Add Rule button.
Choose Rule Type
-
Select Send LDAP Attributes as Claims and click on Next.
Configure Claim
Rule
-
Add a Claim Rule Name and select the Attribute Store as
required from the dropdown.
-
Under Mapping of LDAP Attributes to outgoing claim types, Select
LDAP Attribute as E-Mail-Addresses and Outgoing Claim Type as
Name ID.
- Once you have configured the attributes, click on Finish.
-
After configuring ADFS as IDP, you will need the
Federation Metadata to configure your Service Provider.
-
To get the ADFS Federation Metadata, you can use this URL
https://< ADFS_Server_Name
>/federationmetadata/2007-06/federationmetadata.xml
-
You have successfully configured ADFS as SAML IdP (Identity Provider)
for achieving ADFS Single Sign-On (SSO) Login
Windows SSO (Optional)
Follow the steps below to configure Windows SSO
Steps to
configure ADFS for Windows Authentication
3. Configure ASP.NET SAML Middleware as Service Provider
There are two ways detailed below with which you can configure your SAML
identity provider metadata in the middleware.
A] Upload metadata using the Upload IDP Metadata button:
-
If your identity provider has provided you with the metadata URL or
metadata file (.xml format only), then you can simply configure the
identity provider metadata in the middleware using the
Upload IDP Metadata option.
- You may refer to the screenshot below:
-
You can choose any one of the options according to the metadata format
you have available.
B] Configure the identity provider metadata manually:
-
After configuring your Identity Provider, it will provide you
with IDP Entity ID, IDP Single Sign On URL and
SAML X509 Certificate fields respectively.
- Click Save to save your IDP details.
4. Testing SAML SSO
-
Click on the Test Configuration button to test whether the SAML
Configuration you’ve done is correct.
-
The screenshot below shows a successful result. Click on
SSO Integration to further continue with the SSO Integration.
-
If you are experiencing any error on the middleware end you’ll be shown with
the window similar to below.
- To troubleshoot the error you can follow the below steps:
-
Under
Troubleshoot
tab, enable the toggle to receive the plugin logs.
-
Once enabled, you will be able to retrieve plugin logs by navigating
to
Plugin Settings tab and clicking on Test Configuration.
-
Download the log file from the Troubleshoot tab to see
what went wrong.
-
You can share the log file with us at
aspnetsupport@xecurify.com
and our team will reach out to you to resolve your issue.
5. Attribute Mapping
-
After testing the configuration, Map your application attributes with
the Identity Provider (IdP) attributes.
-
Note: All the mapped attributes will be stored in the session so
that you can access them in your application.
6. Integration Code
-
This steps allow you to retrieve the SSO user information in your application in the form of user claims.
-
You can also look the setup tour to understand how the SSO integration would work in your asp.net
middleware
application.
-
Just copy-paste that code snippet wherever you want to access the user
attributes.
-
Note:This trial middleware only supports user information in claims, retrieving user information in
session
and headers is available in the premium plugin
- You can also copy the integration code from below:
string name="";
string claimtype="";
string claimvalue="";
if(User.Identity.IsAuthenticated)
{
foreach( var claim in User.Claims)
{
claimtype = claim.Type;
claimvalue = claim.Value;
}
var identity = (ClaimsIdentity)User.Identity;
IEnumerable claims = identity.Claims;
string mobileNumber = identity.FindFirst("mobileNumber")?.Value;
}
Note: All the mapped attributes will be stored in the claims to be accessed in your application.
If you want some assistance regarding the integration code, get in touch
with us at
aspnetsupport@xecurify.com
7. Login Settings
- Hover on Select Actions and click on Copy SSO Link.
-
Use the following URL as a link in the application from where you want
to perform SSO:
https://asp-net-middleware-base-url/?ssoaction=login
-
For example, you can use it as:
<a href=”https://asp-net-middleware-base-url/?ssoaction=login”>Log
in</a>
8. Logout Settings
-
Use the following URL as a link to your application from where you want
to perform SLO:
https://asp-net-middleware-base-url/?ssoaction=logout
-
For example, you can use it as:
<a href=”https://asp-net-middleware-base-url/?ssoaction=logout”>Log
out</a>
To configure your IDP, you can find the service provider's metadata in
appsetting.json file. For SP metadata, you can refer to the screenshot
below:
From miniOrange section, copy spentityid, acsurl and provide it to
your identity provider's team.
-
Once the service provider's metadata is configured on the IdP end,
you'll be provided with the IdP metadata file or metadata URL or
metadata URLs like IdP Entity Id, IdP SSO URL etc.
-
To configure your IDP metadata, navigate to
appsettings.json file. You will find the following settings in
the miniorange's JSON section
-
To configure your IDP directly, navigate to
appsettings.json file.
-
Configure the appropriate provided metadata and save the settings.
idp_cert |
Enter the IDP certificate against this field |
ssourl |
Enter the SSO URL against this field |
idp_issuer |
Enter the IDP Issuer against this field |
Attribute Mapping
-
Map your application attributes with the identity provider (IDP)
attributes.
-
Note: All the mapped attributes will be stored in the session so
that you can access them in your application.
Integration Code
-
Just copy-paste the code snippet wherever you want to access the user
attributes.
-
Note: All the mapped attributes will be stored in the session so
that you can access them in your application.
string name="";
string claimtype="";
string claimvalue="";
if(User.Identity.IsAuthenticated) {
name= User.Identity.Name;
foreach( var claim in User.Claims) {
claimtype = claim.Type;
claimValue = claim.Value;
}
}
You can configure the ASP.NET Core SAML 2.0 Single Sign-On (SSO) middleware with
any Identity Provider such as
ADFS, Azure AD, Bitium, centrify, G Suite, JBoss Keycloak, Okta, OneLogin,
Salesforce, AWS Cognito, OpenAM, Oracle, PingFederate, PingOne, RSA
SecureID, Shibboleth-2, Shibboleth-3, SimpleSAML, WSO2
or even with your own custom identity provider. Check the list of
identity providers
here.
Additional Resources
Need Help?
Not able to find your identity provider? Mail us on
aspnetsupport@xecurify.com
and we'll help you set up SSO with your IDP and for quick guidance (via
email/meeting) on your requirement and our team will help you to select the
best suitable solution/plan as per your requirement.