После курса по созданию веб-сайта - не могу понять блок кода

2020-08-01 c# asp.net claims-based-identity

Я пытаюсь изучить ASP.NET.

Я следую курсу, но кое-что не понимаю.

Вот код в контроллере:

[HttpPost("login")]
        public async Task<IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var userFromRepo = await _repo.Login(userForLoginDto.Username.ToLower(), userForLoginDto.Password);
            if (userFromRepo == null)
            {
                return Unauthorized();
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Username)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSetings:Token").Value));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
v
            var tokenDescriptor = new SecurityTokenDescriptor{
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token = tokenHandler.CreateToken(tokenDescriptor);
            
            return Ok(new {
                token = tokenHandler.WriteToken(token)
            });
        }

Я не могу понять массив требований. Я какое-то время искал в Интернете, но не понял. Зачем мне это нужно и как это работает?

Я нашел это весьма полезным, но до сих пор не

Какие утверждения в ASP .NET Identity

полностью понимаю это.

Может ли кто-нибудь помочь мне понять эту концепцию? Зачем это нужно и как работает?

Спасибо.

Answers

Какие претензии?
Предполагая, что вы работаете в пограничной службе и ваша работа заключается в выдаче разрешения на иммиграцию. иммигрантам. Прежде чем выдать кому-либо разрешение, это лицо должно иметь возможность идентифицировать себя, что он действительно принадлежит к стране, на которую он претендует приехать из. Этот человек может принести свое свидетельство о рождении, национальный идентификатор Карта, Visa или любое авторизованное средство идентификации. Эти вещи называются претензии. Человек должен показать вам что-то, что он должен доказать вам, что на самом деле он из той страны. Иногда достаточно одной предъявленной претензии. В другой стране могут сказать, что вы подаете как минимум три претензии (т.е. средства идентификации), прежде чем они выдадут вам это разрешение, просто чтобы это сложно для стран с более высокими проблемами безопасности.

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

Лучший пример - водительские права. Водительские права могут иметь следующие требования

  • название
  • день рождения
  • Разрешено водить машину
  • Разрешено водить мотоцикл
  • Разрешено погружать грузовик
  • Разрешено нырять на автобусе
  • ...

Когда полиция останавливает вас в вашем транспортном средстве, она проверит, имеете ли вы право управлять конкретным транспортным средством и следует ли доверять эмитенту, прежде чем разрешить вам продолжить путешествие. Чтобы получить больше информации, вы можете прочитать эту статью .

То же самое и с авторизацией на основе требований. У конкретного пользователя могут быть разные требования, которые могут предоставить ему доступ к разным функциям.

Когда вы подключаетесь к провайдеру авторизации, например Facebook или Google, вы можете запросить конкретные претензии, не очень приложению для работы нужна дата рождения, а некоторым другим может потребоваться, чтобы проверить, достиг ли пользователь совершеннолетия.

Related