Cette solution démontre une application .NET 10 complète avec authentification Identity fonctionnant à la fois sur:
- Application Web Blazor (navigateur)
- Application MAUI Blazor Hybrid (Windows, Android, iOS, macOS)
MauiBlazorIdentity/
├── MauiBlazorIdentity.Shared/ # Bibliothèque partagée
│ ├── Models/ # Modèles de données
│ │ └── ApplicationUser.cs # Modèle utilisateur Identity
│ ├── Data/ # Contexte de base de données
│ │ └── ApplicationDbContext.cs # DbContext EF Core
│ ├── Services/ # Interfaces de services
│ │ └── IAuthService.cs # Interface d'authentification
│ └── Components/Pages/ # Pages Razor partagées
│ ├── Login.razor # Page de connexion
│ ├── Register.razor # Page d'inscription
│ └── Profile.razor # Page de profil utilisateur
│
├── MauiBlazorIdentity.Web/ # Application Web Blazor
│ ├── Services/
│ │ └── WebAuthService.cs # Service d'auth pour le web
│ └── Program.cs # Configuration Identity Web
│
└── MauiBlazorIdentity.Maui/ # Application MAUI Hybrid
├── Services/
│ ├── MauiAuthService.cs # Service d'auth pour MAUI
│ └── MauiAuthenticationStateProvider.cs
└── MauiProgram.cs # Configuration Identity MAUI
- .NET 10 SDK
- Visual Studio 2022 (ou VS Code avec extensions C# et .NET MAUI)
- Pour MAUI : Workloads .NET MAUI installés
dotnet workload install mauicd MauiBlazorIdentity.Web
dotnet runL'application sera disponible sur http://localhost:5000
cd MauiBlazorIdentity.Maui
dotnet build -t:Run -f net10.0-windows10.0.19041.0cd MauiBlazorIdentity.Maui
dotnet build -t:Run -f net10.0-android/login- Connexion utilisateur/register- Inscription nouvel utilisateur/profile- Profil utilisateur (protégé)/- Page d'accueil (protégé)
✅ Authentification complète avec ASP.NET Core Identity
✅ Base de données SQLite pour le stockage des utilisateurs
✅ Pages partagées entre Web et MAUI
✅ Protection des routes avec [Authorize]
✅ Interface utilisateur responsive avec Bootstrap
✅ Gestion de session persistante
- Fichier:
identity.db(racine du projet Web) - Provider: SQLite via Entity Framework Core
- Fichier:
identity.db(dans AppDataDirectory de l'appareil) - Provider: SQLite via Entity Framework Core
Note: Les deux applications utilisent des bases de données séparées. Pour une synchronisation, vous devrez implémenter une API REST partagée.
options.Password.RequireDigit = true;
options.Password.RequiredLength = 6;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = false;
options.Password.RequireLowercase = false;{
"ConnectionStrings": {
"DefaultConnection": "Data Source=identity.db"
}
}- ✅ Tous les navigateurs modernes (Chrome, Firefox, Edge, Safari)
- ✅ Windows 10/11 (version 1809+)
- ✅ Android 5.0+ (API 21+)
- ✅ iOS 11+
- ✅ macOS 10.15+
- Démarrer l'application (Web ou MAUI)
- Accéder à
/registerpour créer un compte - Se connecter avec les identifiants créés
- Accéder au profil pour voir les informations utilisateur
- Se déconnecter depuis le profil
| Fonctionnalité | Web | MAUI |
|---|---|---|
| Authentification | ASP.NET Core Identity complet | Authentification simplifiée avec hachage SHA256 |
| Stockage | SQLite (serveur) | SQLite (local appareil) |
| Session | Cookie serveur | Preferences API MAUI |
| AuthenticationStateProvider | Intégré Identity | Custom MauiAuthenticationStateProvider |
- Créer le fichier
.razordansMauiBlazorIdentity.Shared/Components/Pages/ - La page sera automatiquement disponible dans Web et MAUI
- Éditer
ApplicationUser.csdans le projet Shared - Créer une migration pour le projet Web:
cd MauiBlazorIdentity.Web dotnet ef migrations add NomDeLaMigration dotnet ef database update
- .NET 10 - Framework
- Blazor - UI Framework
- MAUI - Cross-platform framework
- ASP.NET Core Identity - Authentification
- Entity Framework Core - ORM
- SQLite - Base de données
- Bootstrap 5 - CSS Framework
- Synchronisation des données entre Web et MAUI via API REST
- Authentification biométrique pour MAUI
- OAuth/OpenID Connect avec fournisseurs externes (Google, Microsoft, etc.)
- Réinitialisation de mot de passe par email
- Confirmation d'email
- Authentification à deux facteurs (2FA)
- Gestion des rôles et des autorisations
Ce projet est un exemple de démonstration pour l'apprentissage.
Pour des questions ou des problèmes, consultez la documentation officielle: