Руководство. Использование управления доступом на основе ролей в .NET MAUI
В этом руководстве показано, как добавить роли приложений to.NET многоплатформенный пользовательский интерфейс приложения (.NET MAUI) и получить их в маркере идентификатора.
В этом руководстве описано следующее:
- Доступ к ролям в маркере идентификатора.
Необходимые компоненты
- Руководство. Вход пользователей в приложение оболочки .NET MAUI
- Использование управления доступом на основе ролей (RBAC) для приложений
Получение утверждений групп и ролей в .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,...
. Убедитесь, что вы создаете приложение для обработки следующих условий:
- Отсутствие утверждений ролей в маркере
- Пользователь не был назначен какой-либо роли
- Несколько значений в утверждении ролей при назначении пользователя нескольким ролям
При определении ролей приложений для приложения необходимо реализовать логику авторизации для этих ролей.
Следующие шаги
Дополнительные сведения о утверждениях группы и принятии обоснованных решений об использовании ролей или групп приложений см. в следующих статье: