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