-
Step Up Challenges with Duende IdentityServer and ASP.NET Core APIs
In a previous post, we discussed implementing a Step Up challenge in a typical ASP.NET Core client application powered by Duende IdentityServer. A Step Up challenge helps you build applications that ensure critical actions are performed by the user in question by attempting additional levels of scrutiny.
While client logic can handle most Step Up Challenge scenarios, modern ASP.NET Core solutions may depend on a distributed architecture of APIs, each with unique security requirements.
In this post, we’ll cover the OAuth RFC 9470 specification. This specification allows API developers to request that a client perform a Step Up challenge and issue access tokens that meet the security requirements of an API endpoint. We’ll also see how to implement challenges in your ASP.NET Core APIs and dependent clients.
-
Astro - Open Source Sponsorship
We’re passionate about open source and grateful for the many maintainers and contributors who make the software world better for everyone. Our team has been fortunate to play a part in the .NET open source ecosystem, with contributions to numerous projects and NuGet packages over the years. We know firsthand that maintaining open source projects is both rewarding and challenging, and we want to do our part in supporting the community.
This time around, we selected Astro as our next open source sponsorship recipient as part of our ongoing commitment to supporting the open source projects that empower our products and community.
-
Step Up Challenges for ASP.NET Core Client Apps with Duende IdentityServer
Modern software solutions involve hundreds of user actions. When building solutions, user interactions can have impacts ranging from mundane to critical, making it the application’s responsibility to ensure that the user acts intentionally. While a system can follow the best security practices, it may be beneficial to reaffirm a user’s identity before they perform a potentially irreversible action. For example, by requiring multi-factor authentication (MFA) as a Step Up challenge to confirm a user's actions.
In this post, we’ll define Step Up challenges, and highlight their role in a modern .NET solution. We'll also examine how to implement the feature in your ASP.NET Core apps powered by Duende IdentityServer to add a layer of security to mission-critical user decisions.
-
.NET 8.0.17 Upgrades, Forwarded Headers, and Unknown Proxy Issues
We've recently seen a trend of issues in our priority support related to a .NET 8.0.17 release that we thought we'd address publicly to give developers information about the cause and how to resolve it quickly.
With any luck, we'll help many folks avoid this issue entirely before it becomes a problem in their production environments. Let's get started.
-
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.