Damienbod Software Engineering
621 FOLLOWERS
Damienbod an engineer, Microsoft MVP living in Switzerland interested in web development. His favorite technologies are ASP.NET, Javascript, Angular, Typescript, MS SQL Server, SQLite and Elasticsearch.
Damienbod Software Engineering
4d ago
This article shows how to implement a secure .NET 8 Blazor Web application using OpenID Connect and security headers with CSP nonces. The NetEscapades.AspNetCore.SecurityHeaders nuget package is used to implement the security headers and OpenIddict is used to implement the OIDC server.
Code: https://github.com/damienbod/BlazorWebOidc
OpenIddict is used as the identity provider and an OpenID connect client is setup to allow an OpenID Connect confidential code flow PKCE client. The Web application is a server rendered application using Blazor server components implemented using Blazor Web, ASP.N ..read more
Damienbod Software Engineering
1w ago
This article shows how to implement a web application using backend for frontend security architecture for authentication and consumes data from a downstream API protected using a JWT access token which can only be accessed using an app-to-app access token. The access token is acquired using the OAuth2 client credentials flow and the API does not accept user access tokens from the UI application. OpenIddict is used as the OpenID Connect server. The STS provides both the OAuth2 client and the OpenID Connect client as well as the scope definitions.
Code: https://github.com/damienbod/bff-aspnetco ..read more
Damienbod Software Engineering
2w ago
This article shows some of the base conditional access policies which can be implemented for all Microsoft Entra ID tenants. Phishing resistant authentication should be required for all administration flows and some other user policies like sign-in risk MFA or terms of conditions. I recommend these base policies when implementing an Microsoft Entra ID tenant using a P2 license.
Disable security defaults
The security defaults are a good basic setup, but when a P2 license is used, conditional access policies can be applied and the tenant can be setup to force things like phishing resistant authe ..read more
Damienbod Software Engineering
1M ago
This article shows how to onboard different clients or organizations in an ASP.NET Core application to use separated Azure blob containers with controlled access using security groups and RBAC applied roles. Each user in a client group can only access a single blob storage and has no access to blob containers belonging to different clients. Microsoft Entra ID is used to implement the blob storage access.
Code: https://github.com/damienbod/AspNetCoreEntraIdBlobStorage
Blogs in this series
Using Blob storage from ASP.NET Core with Entra ID authentication
Delegated read and application write acc ..read more
Damienbod Software Engineering
1M ago
This article shows how an ASP.NET Core application can control the write access to an Azure blob storage container using an application app registration. Microsoft Entra ID is used to control the user access and to implement the authentication of the web application.
Code: https://github.com/damienbod/AspNetCoreEntraIdBlobStorage
Blogs in this series
Using Blob storage from ASP.NET Core with Entra ID authentication
Delegated read and application write access to blob storage using ASP.NET Core with Entra ID authentication
Multi client blob storage access using ASP.NET Core with Entra ID authen ..read more
Damienbod Software Engineering
2M ago
This article shows how to use a CSP nonce in a Blazor Web application using the InteractiveServer server render mode. Using a CSP nonce is a great way to protect web applications against XSS attacks and other such Javascript vulnerabilities.
Code: https://github.com/damienbod/BlazorServerOidc
Notes
The code in this example was built using the example provided by Javier Calvarro Nelson.
https://github.com/javiercn/BlazorWebNonceService
Services and middleware
The Blazor Web application is implemented using the AddInteractiveServerComponents for the InteractiveServer server render mode. The nonc ..read more
Damienbod Software Engineering
2M ago
This article shows how to implement a secure upload and a secure download in ASP.NET Core using Azure blob storage. The application uses Microsoft Entra ID for authentication and also for access to the Azure Blob storage container.
Code: https://github.com/damienbod/AspNetCoreEntraIdBlobStorage
Security architecture
The application is setup to store the file uploads to an Azure Blob storage container. The authentication uses delegated only flows. A user can authenticate into the application using Microsoft Entra ID. The Azure App registration defines App roles to use for access authorization ..read more
Damienbod Software Engineering
2M ago
This article shows how to implement an ASP.NET Core Blazor Web application using Microsoft Entra ID for authentication. Microsoft.Identity.Web is used to implement the Microsoft Entra ID OpenID Connect client.
Code: https://github.com/damienbod/Hostedblazor8MeID
Note: I based this implementation on the example provided by Tomás López Rodríguez and adapted it.
Setup
The Blazor Web application is an OpenID Connect confidential client (code flow, PKCE) which uses Microsoft Entra ID for authentication. An Azure App registration (Web configuration) is used to create the client and only delegated s ..read more
Damienbod Software Engineering
3M ago
This article shows how to migrate a Blazor server application to a Blazor Web application. The migration used the ASP.NET Core migration documentation, but this was not complete and a few extra steps were required. The starting point was a Blazor Server application secured using OpenID Connect for authentication. The target system is a Blazor Web application using the “InteractiveServer” rendermode.
Note
The result of this project is not ready to use in production as it was not possible to migrate the security headers fully and I am not sure if the state management works correctly. I would hol ..read more
Damienbod Software Engineering
3M ago
This article shows how to secure a Blazor Server application. The application implements an OpenID Connect confidential client with PKCE using .NET 8 and configures the security headers as best possible for the Blazor Server application. OpenIddict is used to implement the identity provider and the OpenID Connect server.
Code: https://github.com/damienbod/BlazorServerOidc
OpenID Connect flow
In the first step, the authentication can be solved using OpenID Connect. With this, the process of user authentication is removed from the client application and delegated to an identity provider. In this ..read more