-
What is an OAuth 2.0 and OpenID Connect Client?
For anyone in the security industry, especially developers who communicate in security lingo about OpenID Connect and OAuth 2.0 daily, the question and answer to “What is a client?” may seem self-evident. However, for many folks on the non-technical side of application security, the term “client” can feel fuzzy and involve overlapping and muddling concepts from other subject domains.
A common and understandable misconception is that folks new to security confuse “client” with an individual or paying customer. These misunderstandings can lead to miscommunication and frustrating times between parties. So, let’s clear that up today.
In this short post, we will explain clearly what a client is in the context of application security and how understanding the concept can help you better understand your current solution's inner workings.
-
Monitoring Duende IdentityServer License Usage with ASP.NET Core Health Checks
Health checks are vital for maintaining the reliability and performance of modern applications. They provide a systematic way to monitor the health and status of your application and its dependencies. ASP.NET Core offers built-in support for health checks, and with the help of third-party packages, you can easily integrate these checks with popular monitoring systems like Prometheus, Grafana, and Azure Application Insights.
With health checks, you can monitor various aspects of your application, including dependencies (e.g., databases, external services), specific metrics (e.g., response times, error rates), and compliance with licensing or other operational requirements. For IdentityServer, you may want to monitor the health of the discovery endpoint, or monitor license compliance to ensure your application remains within the terms of the license agreement.
In this blog post, we will see how to implement a custom ASP.NET Core health check that reports on IdentityServer license status and usage.
-
Testing Duende IdentityServer Login Flow With a .NET 10 dotnet run app.cs
We recently attended NDC Oslo and had a great time chatting with current and future Duende IdentityServer customers. During the event, an individual approached us with an interesting dilemma and wondered if we could help them solve it.
They wanted to automate a UI test against their deployed instance of Duende IdentityServer but avoid using an end-to-end library like Selenium or Playwright, because those libraries depend on a headless browser like Chromium or Firefox. Can we test that first-party logins work properly entirely through .NET Code?
Luckily, brilliant folks work at Duende, including our Director of Engineering, Damian Hickey, who was able to write a simple console application simulating a browser. Still, with the recent announcement of .NET 10’s
dotnet run
app.cs
, we thought we could provide this value through a script that is easily editable and runnable from any environment with .NET 10 available. -
The role of AuthenticationProperties in ASP.NET Core
When working with user authentication in ASP.NET Core, you may encounter situations where you need to pass additional information through the authentication process. For example, you might want to track specific user actions, ensure they are redirected to a particular page after logging in, or pass custom parameters to an identity provider.
The
AuthenticationProperties
class provides an elegant solution for these scenarios. It allows you to carry state through call sites within a specific request, maintain state throughout the authentication process, or pass additional parameters to the identity provider you are using.In this post, we'll see how to use the
AuthenticationProperties
class effectively in your ASP.NET Core applications and explore some OpenID Connect-specific options you can use in your apps. -
Essential Moments in the OAuth and OpenID Connect Timeline
Like all technological achievements, individuals' cumulative efforts and contributions lead to something great. The current state of application security results from many talented individuals who take security seriously, coming together to build a technology from which we all benefit. Without them, we’d likely all be building bespoke security solutions with varying levels of vulnerability and interoperability. Thank goodness for standards!
In this post, we take a trip down memory lane and explore some of the standards created over the last 15 years, both in the IETF and the OpenID Foundation, that make OAuth and OpenID Connect what they are today.
-
Duende IdentityServer and OTel Metrics, Traces, and Logs in the .NET Aspire Dashboard
IdentityServer offers multiple diagnostic possibilities. The logs contain detailed information and are great for troubleshooting, but we’re seeing a shift toward using OpenTelemetry to collect metrics, traces, and logs to help monitor and troubleshoot applications.
This post will examine OpenTelemetry, its use within Duende IdentityServer, and how to surface all necessary telemetry signals in the .NET Aspire Dashboard. Combining these powerful technologies gives you a world-class development experience that helps you rationalize and implement solutions correctly.
-
Microsoft Azure SQL and Entity Framework Core Performance Issues and Solution
Many IdentityServer users are upgrading their deployments to the latest version of .NET and Duende IdentityServer. Most upgrades are uneventful and fair, with many users pleasantly surprised by a smoother-than-expected process. Successful deployments are excellent news! We love to hear that our care and attention to building a secure and stable product have led to a great developer experience.
Developers choose Duende IdentityServer over other commercial offerings because of its flexibility and almost infinite configurability. With great power comes great responsibility, and as developers, we all need to understand the consequences of our decisions. While these options are good in most cases, they can make performance investigations bespoke and time-consuming.
During the upgrade process, a handful of users reported a particular kind of performance degradation, which led our highly skilled and experienced customer success team to investigate.
The investigation has taken a few weeks of back-and-forth with customers, jumping on calls, and deep-diving into the Duende IdentityServer code and the .NET codebases. In this post, we'll describe what our customers saw, the cause of the instability, and the solution.
-
Managing OpenAPI Specifications with Backend For Frontend and Swagger UI
ASP.NET Core web application development can span from entirely server-side rendered UIs to front-end single-page applications dominating the user experience. More often than not, you’ll likely have some client side code that fetches information from a backend resource, whether an endpoint or a multipurpose API. As the .NET Identity company, Duende recommends securing these calls, but you may be asking, how?
Security recommendations have evolved with the popularity of JavaScript and the initial explosion of single-page application frameworks. As of this post, the best current practices recommend developers secure their browser-based application with Backend For Frontend (BFF) and adopt a “no tokens in the browser” policy. Realizing that a browser client’s storage is a potential attack vector means malicious parties can target high-value resources such as refresh and access tokens stored locally, leading to compromised security models.
In this post, we’ll briefly recap the BFF pattern and then proceed to a sample of revealing your OpenAPI specifications to users either with Swagger’s UI or client SDK generators.
But first, let’s talk about BFF for folks who are first learning about the pattern.
-
Introducing the Duende Developer Community
While it has been around for a while, today is a good day to officially launch the Duende Developer Community! Whether you use Duende IdentityServer, BFF, or our open source tools, the Community is a place where you can connect with peers, share your knowledge, showcase your projects, participate in discussions, and more.
Let's take a look.
-
Authorization Policy TagHelpers for ASP.NET Core Razor Views
An essential part of ASP.NET Core’s authentication and authorization implementation is the
ClaimsPrincipal
class. Duende IdentityServer issues claims using the OpenID Connect protocol, and your ASP.NET Core applications transform the results into aClaimsPrincipal
instance used throughout your web applications.Once you have an authenticated user, the fun starts, as you’ll want to make logical decisions about which resources the user can access. One of the more important places to make decisions is your user interface, where you may want to show elements based on authorization policies in your solution.
In this post, we’ll look at implementing an
AuthorizationPolicyTagHelper
to keep your Razor Views free of noisy C# flow constructs and discuss performance considerations that can make your pages feel even snappier.