Поделиться через


Руководство: Использование управления доступом на основе ролей в настольном приложении .NET MAUI

Применимо: Белый круг с серым символом X. Арендаторы рабочей силы Зеленый круг с символом белой галочки. Внешние арендаторы (узнать больше)

В этом руководстве показано, как добавить роли приложений в многоплатформенный пользовательский интерфейс приложения .NET (MAUI) и получить их в токене идентификатора.

Изучив это руководство, вы:

  • Доступ к ролям в токене идентификатора.

Предпосылки

Получение утверждений о группах и ролях в .NET MAUI

После настройки клиента можно получить утверждения ролей и групп в клиентском приложении. Утверждения ролей и групп присутствуют как в токене идентификации, так и в токене доступа. Веб-API проверяют маркеры доступа только для тех клиентских приложений, для которых они были приобретены. Клиент не должен проверять маркеры доступа.

Для реализации авторизации на стороне клиента в .NET MAUI необходимо проверить утверждения о ролях приложения в токене идентификации.

В этой серии учебников вы создали приложение .NET MAUI, в котором вы разработали ClaimsView.xaml.cs для обработки ClaimsView данных. В этом файле мы изучаем содержимое идентификационных токенов. Значение требования роли проверяется в следующем фрагменте кода:

Чтобы получить доступ к атрибуту роли, можно изменить фрагмент кода следующим образом:

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;

Замечание

Чтобы прочитать маркер идентификатора, необходимо установить пакет System.IdentityModel.Tokens.Jwt.

При назначении пользователя нескольким ролям строка ролей содержит все роли, разделенные запятой, например Orders.Manager, Store.Manager,.... Убедитесь, что вы создаете приложение для обработки следующих условий:

  • Отсутствие требований на роли в токене
  • Пользователь не был назначен какой-либо роли
  • Несколько значений в утверждении ролей при назначении пользователя на несколько ролей

При определении ролей приложений для приложения необходимо реализовать логику авторизации для этих ролей.

Дальнейшие действия

Дополнительные сведения о групповых утверждениях и принятии обоснованных решений об использовании ролей или групп приложений см. в следующих статьях: