Files
zitadel/apps/docs/content/sdk-examples/dotnet.mdx
T

79 lines
2.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: ASP.NET Core
sidebar_label: ASP.NET Core
framework_url: https://learn.microsoft.com/aspnet/core/
auth_library: "Microsoft.AspNetCore.Authentication.OpenIdConnect"
auth_library_url: https://learn.microsoft.com/aspnet/core/security/authentication/openid-connect
example_repo: https://github.com/zitadel/example-auth-dotnet
auth_flow: pkce
status: stable
---
## Overview
[ASP.NET Core](https://learn.microsoft.com/aspnet/core/) is a production-ready framework for building web applications. This example integrates **Zitadel** with the built-in **OpenID Connect handler** using the **Authorization Code Flow + PKCE** to authenticate users securely and manage sessions.
#### Auth library
This example uses **[Microsoft.AspNetCore.Authentication.OpenIdConnect](https://learn.microsoft.com/aspnet/core/security/authentication/openid-connect)**. The middleware handles the PKCE dance, exchanges authorization codes for tokens, keeps tokens available on the request, and plugs into the standard ASP.NET Core authentication/authorization pipeline.
---
## What this example demonstrates
- Public landing page with “Sign in with Zitadel”.
- PKCE login handled by the ASP.NET Core OIDC middleware.
- Route protection via the auth/authorization middleware; profile page renders OIDC claims.
- Cookie-based session management with configurable idle timeout.
- Federated logout that clears the local session and redirects through Zitadel’s RP-initiated logout.
---
## Getting started
### Prerequisites
- .NET SDK 8 or later
### Account setup
Create a Web application in Zitadel configured for Authorization Code + PKCE, then set:
> **Redirect URIs:** `http://localhost:3000/auth/callback`
> **Post Logout Redirect URIs:** `http://localhost:3000/auth/logout/callback`
These values must match the sample configuration.
### Run the example
1. Clone the repository:
```bash
git clone https://github.com/zitadel/example-auth-dotnet.git
cd example-auth-dotnet
```
2. Copy `.env.example` to `.env` and fill in your values:
```dotenv
PORT=3000
SESSION_DURATION=3600
ZITADEL_DOMAIN="https://your-zitadel-domain"
ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret"
ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
```
3. Start the dev server (restores dependencies automatically):
```bash
make start
```
The app will be available at `http://localhost:3000`.
---
## Learn more and resources
* [PKCE concept](https://oauth.net/2/pkce/)
* [ASP.NET Core OIDC handler](https://learn.microsoft.com/aspnet/core/security/authentication/openid-connect)
* [Zitadel OIDC guide](https://zitadel.com/docs/guides/integrate/login/oidc/login-users)
* [Federated logout](https://zitadel.com/docs/guides/integrate/login/oidc/logout)
* [Example repository](https://github.com/zitadel/example-auth-dotnet)