Dela via


Självstudie: Använda rollbaserad åtkomstkontroll i din .NET MAUI-skrivbordsapp

Gäller för: Grön cirkel med en vit bockmarkeringssymbol som anger att följande innehåll gäller för externa klienter. Externa klienter (läs mer)

Den här självstudien visar hur du lägger till approller till .NET Multi-platform App UI (.NET MAUI) och tar emot dem i ID-tokenet.

I den här handledningen kommer du att:

  • Få åtkomst till rollerna i ID-tokenen.

Förutsättningar

Motta grupp- och rollanspråk i .NET MAUI

När du har konfigurerat kundens klientorganisation kan du hämta dina roller och gruppanspråk i din klientapp. Rollerna och gruppernas anspråk finns båda i ID-token och åtkomsttoken. Åtkomsttoken verifieras endast i de webb-API:er som de hämtades av en klient för. Klienten bör inte verifiera åtkomsttoken.

.NET MAUI måste söka efter anspråk om approller i ID-token för att utföra auktorisering på klientsidan.

I den här självstudieserien skapade du en .NET MAUI-app där du utvecklade ClaimsView.xaml.cs för att hantera ClaimsView data. I den här filen kontrollerar vi innehållet i ID-token. Värdet för rollanspråket kontrolleras i följande kodfragment:

Om du vill komma åt rollanspråket kan du ändra kodfragmentet på följande sätt:

var idToken = PublicClientSingleton.Instance.MSALClientHelper.AuthResult.IdToken;
var handler = new JwtSecurityTokenHandler();
var token = handler.ReadJwtToken(idToken);
// Get the role claim value
var roleClaim = token.Claims.FirstOrDefault(c => c.Type == "roles")?.Value;

if (!string.IsNullOrEmpty(roleClaim))
{
    // If the role claim exists, add it to the IdTokenClaims
    IdTokenClaims = new List<string> { roleClaim };
}
else
{
    // If the role claim doesn't exist, add a message indicating that no role claim was found
    IdTokenClaims = new List<string> { "No role claim found in ID token" };
}

Claims.ItemsSource = IdTokenClaims;

Anmärkning

Om du vill läsa ID-token måste du installera System.IdentityModel.Tokens.Jwt-paketet.

Om du tilldelar en användare flera roller innehåller rollsträngen alla roller avgränsade med ett kommatecken, till exempel Orders.Manager, Store.Manager,.... Se till att du skapar ditt program för att hantera följande villkor:

  • Avsaknad av rollanspråk i token
  • Användaren har inte tilldelats någon roll
  • Flera värden i rollkravet när du tilldelar en användare till flera roller

När du definierar approller för din app är det ditt ansvar att implementera auktoriseringslogik för dessa roller.

Nästa steg

För mer information om gruppanspråk och hur du fattar välgrundade beslut om användningen av approller eller grupper, se: