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

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

В этом руководстве описано следующее:

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

Необходимые компоненты

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

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

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

В этой серии учебников вы создали приложение .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,.... Убедитесь, что вы создаете приложение для обработки следующих условий:

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

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

Следующие шаги

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