Что означает механизм заявок в новом ASP.NET Identity Core?
Существует два общих подхода к авторизации, основанных на роли и утверждении.
Ролевая безопасность
Пользователь получает одну или несколько ролей, через которые он получает права доступа. Кроме того, назначая пользователя на роль, пользователь сразу получает все права доступа, определенные для этой роли.
Безопасность на основе требований
Идентификация на основе утверждений - это набор утверждений. Заявка - это утверждение, которое сущность (пользователь или другое приложение) делает о себе, это просто утверждение. Например, список заявок может содержать имя пользователя, адрес электронной почты пользователя, возраст пользователя, авторизацию пользователя для действия. В безопасности на основе ролей пользователь представляет учетные данные непосредственно приложению. В модели на основе утверждений пользователь представляет заявки, а не учетные данные приложению. Чтобы претензия имела практическую ценность, она должна исходить от сущности, которой доверяет приложение.
Ниже приведены шаги, иллюстрирующие последовательность действий в модели безопасности на основе утверждений.
- Пользователь запрашивает действие. Приложение проверяющей стороны (RP) запрашивает токен.
- Пользователь представляет учетные данные в орган выдачи, которому доверяет приложение RP.
- Орган выдачи выдает подписанный токен с утверждениями после проверки подлинности учетных данных пользователя.
- Пользователь представляет токен приложению RP. Приложение проверяет подпись токена, извлекает претензии и, основываясь на претензиях, принимает или отклоняет запрос.
Но я до сих пор не могу понять и найти какую-либо информацию, когда данные добавляются в AspNetUserClaims и в каких ситуациях эта таблица используется?
Когда вы находитесь в ситуации, когда безопасность на основе ролей не используется, и вы решили использовать защиту на основе утверждений, вам потребуется использовать таблицу AspNetUserClaims. Чтобы узнать, как использовать утверждения в ASP.NET Identity, см. Ссылку ниже для получения дополнительной информации.
http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html
Обновить
В какое время мне нужно использовать безопасность на основе ролей, а на основе утверждений? Не могли бы вы написать несколько примеров?
Не очень ясно, в какой ситуации вы бы использовали или не использовали бы безопасность на основе ролей или утверждений, а не случай, когда вы использовали бы А, а не Б.
Но управление доступом на основе утверждений позволяет лучше отделить правила авторизации от основной бизнес-логики. При изменении правил авторизации основная бизнес-логика остается неизменной. В некоторых ситуациях вы можете предпочесть использование подхода, основанного на утверждениях.
Иногда претензии не нужны. Это важный отказ от ответственности. Компании с множеством внутренних приложений могут использовать встроенную проверку подлинности Windows для достижения многих преимуществ, предоставляемых претензиями. Active Directory отлично справляется с хранением идентификационных данных пользователей, и поскольку Kerberos является частью Windows, вашим приложениям не нужно включать много логики аутентификации. Поскольку каждое создаваемое вами приложение может использовать встроенную проверку подлинности Windows, возможно, вы уже достигли утопии своей личности. Однако есть много причин, по которым вам может понадобиться что-то кроме аутентификации Windows. У вас могут быть веб-приложения, которые используются людьми, не имеющими учетных записей в вашем домене Windows. Другая причина может заключаться в том, что ваша компания объединилась с другой компанией, и вы возникают проблемы с аутентификацией в двух лесах Windows, которые не имеют (и могут никогда не иметь) доверительные отношения. Возможно, вы хотите поделиться удостоверениями с другой компанией, у которой есть приложения, отличные от .NET Framework, или вам нужно делиться удостоверениями между приложениями, работающими на разных платформах (например, Macintosh). Это всего лишь несколько ситуаций, в которых идентификация на основе утверждений может быть правильным выбором для вас.
Для получения дополнительной информации, пожалуйста, посетите http://msdn.microsoft.com/en-us/library/ff359101.aspx