ASP.NET Core is the open-source version of ASP.NET, that runs on Windows, Linux, macOS, and Docker.
- Application startup
- Configuration
- Dependency Injection
- Error handling
- Host and deploy
- Filters
- Filters
- Identity
- Integration tests
- Logging
- Multiple environments
- Routing
- Web server implementations
- Integration tests in ASP.NET Core
- Real Browser Integration Testing with Selenium Standalone, Chrome, and ASP.NET Core 2.1 - 2018-05-23
- IntegrationTestsSample
Articles to review:
- A complete containerized .NET Core Application microservice that is as small as possible
- Setting up Webpack in ASP.NET Core
- ReactJs Webpack and ASP.NET Core
- How to use Webpack in ASP.Net core projects; a basic React Template sample
- BUNDLING IN .NET CORE MVC APPLICATIONS WITH WEBPACK
- How to include Bootstrap in your project with Webpack
public IActionResult Post([FromBody]string action)
{
if (...)
{
return StatusCode(423);
}
return Ok(new ... {});
}
}
-
Go to Azure Portal and create an application in Azure Active Directory: Integrating Azure AD into an ASP.NET Core web app
-
Examples: GitHub Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore or run
dotnet new mvc -o dotnetadauth --auth SingleOrg --client-id <clientId> --tenant-id <tenantId> --domain <domainName>
-
Edit csproj file
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="2.1.1" />
- Edit
appsettings.json
file
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "<domainName>",
"TenantId": "<tenantId>",
"ClientId": "<clientId>",
"CallbackPath": "/signin-oidc"
},
- Edit
Startup.cs
:
// in ConfigureServices()
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services
.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// in Configure()
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();