MAUI.net Autenticazione con Azure

MAUI.net Autenticazione con Azure

Introduzione
In questo articolo spiegheremo l’implementazione di MAUI.net Autenticazione con Azure tramite Visual Studio 2022. L’autenticazione è il processo di ottenimento di credenziali di identificazione come nome e password da un utente e di convalida di tali credenziali rispetto a un’autorità. L’entità che ha inviato le credenziali è considerata un’identità autenticata se le credenziali sono valide. Una volta stabilita un’identità, un processo di autorizzazione determina se tale identità ha accesso o meno a una determinata risorsa e Microsoft Data Sync Framework ha un supporto integrato per qualsiasi provider di autenticazione che utilizza un Json Web Token (JWT) all’interno di un’intestazione della transazione HTTP. Questa applicazione utilizza Microsoft Authentication Library (MSAL) per richiedere tale token e autorizzare l’utente connesso al servizio backend.

Sebbene per l’autenticazione utilizziamo Microsoft Entra ID, possiamo usare qualsiasi libreria di autenticazione che preferisciamo con Azure Mobile Apps.

Esistono molti modi per eseguire l’autenticazione utilizzando .NET MAUI

  • Base: utilizzato quando l’autenticazione viene eseguita per account personali e aziendali senza utilizzare un broker. Pertanto, un account personale è un account personale Microsoft come Outlook, ecc.
  • Con Broker: è destinato agli account aziendali in cui viene aggiunto un ulteriore livello di sicurezza tramite Authenticator/Broker. È utile per MFA ed è necessario per rispettare altre policy di sicurezza come l’accesso condizionale.
  • B2C: utilizzato quando l’utente finale può accedere utilizzando credenziali OAuth2 come Google, Facebook, ecc. Non supporta il broker.
  • autenticazione tramite .NET MAUI

Autenticazione tramite .NET MAUIMAUI.net Autenticazione con Azure
Passo 1

Creiamo un nuovo progetto in Visual Studio 2022 e selezioniamo l’opzione app sotto multipiattaforma nel pannello laterale sinistro. Dopodiché, dobbiamo cliccare sull’opzione .NET MAUI App with C# e cliccare sul pulsante continua.

Passo 2

Nella pagina successiva è necessario selezionare la versione 6.0 del framework .Net e fare clic sul pulsante Continua.

Configuriamo la nostra nuova app .NET MAUI

Passo 3

Nella pagina successiva, dobbiamo fornire il nome del progetto e il nome della soluzione insieme alla nostra posizione e fare clic sul pulsante Crea

Configuriamo la nuova app .NET MAUI

Passo 4

Il passo successivo è scaricare il pacchetto NuGet Microsoft Identity Web e Microsoft Identity Client

  1. Scarichiamo Microsoft.Identity.Web da NuGet Package Manager

dotnet aggiungi pacchetto Microsoft.Identity.Web –versione 2.17.0

Questo pacchetto consente alle app Web ASP.NET Core e alle API Web di utilizzare la piattaforma di identità Microsoft (in precedenza Azure AD v2.0). Questo pacchetto è utilizzato specificamente per le applicazioni Web, che eseguono l’accesso degli utenti, e per le API Web protette, che richiamano facoltativamente le API Web downstream.

  1. Scarichiamo Microsoft.Identity.Web da NuGet Package Manager

dotnet aggiungi pacchetto Microsoft.Identity.Client –versione 4.59.0

ci aiuterà ad accedere a MSAL.NET semplificare l’ottenimento di token dalla piattaforma di identità Microsoft per gli sviluppatori che accedono agli utenti con account aziendali e scolastici Account personali Microsoft e identità social tramite Azure AD B2C. Questi token forniscono l’accesso a Microsoft Cloud API e a qualsiasi altra API protetta dalla piattaforma di identità Microsoft. Questa versione supporta l’aggiunta di funzionalità di autenticazione ai tuoi client basati su .NET .NET MAUI, .NET Framework .NET MAUI, Xamarin iOS, Xamarin Android e UWP.

Passo 5

Il passaggio successivo consiste nel creare una nuova stringa di configurazione contenente i dettagli di Azure e il diritto di CoDesign.

Pertanto, quanto segue (linguaggio C#)

public string[] Scopes => new string[] { "https://xxxxxxxxx//user_impersonation" };
public string ClientId => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
public string Authority => "https://login.microsoftonline.com/xxxxxxxxxx/saml2";
public string AdAuthRedirectUrl => "xxxxxxxxx://auth";
public string CodesignEntitlement => "Buddle ID";


Passo 6

Il passo successivo consiste nel creare una nuova classe per la connessione con Azure, come il file AzureAdAuthService.cs, e definire PublicClientApplicationBuilder nel costruttore.

using Microsoft.Identity.Client;
namespace ContextMenu
{
public class AzureAdAuthService
{
private readonly IPublicClientApplication authenticationClient;
public string[] Scopes => new string[] { "https://xxxxxxxxx//user_impersonation" };
public string ClientId => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
public string Authority => "https://login.microsoftonline.com/xxxxxxxxxx/saml2";
public string AdAuthRedirectUrl => "xxxxxxxxx://auth";
public string CodesignEntitlement => "Buddle ID";
public AzureAdAuthService()
{
authenticationClient = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(Authority)
.WithRedirectUri(AdAuthRedirectUrl)
.WithIosKeychainSecurityGroup(CodesignEntitlement)
.Build();
}
public async Task LoginAsync(CancellationToken cancellationToken)
{
AuthenticationResult result = null;
result = await authenticationClient.AcquireTokenInteractive(Scopes)
.WithParentActivityOrWindow(Microsoft.Maui.ApplicationModel.Platform.CurrentActivity)
.WithPrompt(Prompt.ForceLogin)
.ExecuteAsync(cancellationToken);
return result;
}
}
}


Passo 7

Il passaggio successivo consiste nel definire l’autenticazione nella pagina di origine e creare il nuovo evento per definire AzureAdAuthService per la connessione con MSAL.NET.

namespace ContextMenu;
using System.IdentityModel.Tokens.Jwt;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
async void ConnectionClicked(System.Object sender, System.EventArgs e)
{
PermissionStatus status = await Permissions.CheckStatusAsync();
if (status == PermissionStatus.Granted)
{
var authService = new AzureAdAuthService();
var result = await authService.LoginAsync(CancellationToken.None);
var token = result?.AccessToken;
if (token != null)
{
var handler = new JwtSecurityTokenHandler();
var data = handler.ReadJwtToken(token);
var claims = result.ClaimsPrincipal.Claims.ToList();
if (data != null)
{
var EmailID = claims.FirstOrDefault(x => x.Type.Equals("preferred_username"))?.Value;
var UserName = claims.FirstOrDefault(x => x.Type.Equals("name"))?.Value;
}
}
}
}
}


Conclusione MAUI.net Autenticazione con Azure
Ci auguriamo che questo articolo vi abbia fornito informazioni utili per implementare la connessione di autenticazione di Azure AD tramite .Net MAUI ed eseguire l’app su Android/iOS. Consigliamo però di apprendere in maniera adeguata queste nozioni seguendo un corso di formazione con un nostro docente esperto in MAUI.net .

(fonte)

Innovaformazione, scuola informatica specialistica promuove l’utilizzo consapevole dei framework cross-platform per lo sviluppo app mobile. Nell’offerta formativa trovate il Corso MAUI.net rivolto alle aziende.

INFO: info@innovaformazione.net – Tel. 3471012275 (Dario Carrassi)

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati