Я изучаю, используя авторизацию на основе утверждений в ASP.NET (MVC Core 1.0). При настройке ClaimsIdentity
я предоставляю список пар строк/строк значений для представления каждого Claim
. Пример:Требования ASP.NET для ClaimTypes
List<Claim> claims = new List<Claim>
{
new Claim("UserID", user.ID),
new Claim("Name", user.Name),
new Claim("Role", "basic")
};
Я понимаю, что могу использовать любые ключи/значения, которые я хочу. Но я заметил, что есть некоторые предварительно определенные ключи, доступные через ClaimsType
class. Таким образом, я мог бы потенциально использовать некоторые из этих предопределенных ключей вместо:
List<Claim> claims = new List<Claim>
{
new Claim(ClaimTypes.Sid, user.ID),
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Role, "basic")
};
Вопросы:
Если я использую предопределенные ключи, существуют какие-то правила/ограничения в отношении фактических значений назначается каждому ключу или определяется ли его приложение? Например, нормально ли вставить первичный ключ базы данных в
ClaimTypes.Sid
, или у ASP.NET есть определенные ожидания относительно того, что должно содержатьClaimTypes.Sid
?Есть ли
ClaimTypes
, которые требуется, или это полностью до приложения, чтобы решить, что включать или не включать? Я полагаю, что ответ может зависеть от определенных сторонних служб аутентификации, с которыми я бы взаимодействовал, но как насчет простого случая автономного проекта ASP.NET, который не использует стороннюю аутентификацию. Есть ли у ASP.NET какие-либо требования?
Любые ссылки на требования и/или рекомендации по использованию конкретных ключей/ценностей будут оценены.
Благодарим за информацию об Identity. В настоящее время я не использую Identity, но это может измениться по дороге. Я использую EF6 с MVC Core 1 прямо сейчас (потому что EF7 слишком неполный), а Identity, похоже, переплетается с EF7 и требует [прыгать через некоторые обручи] (http://stackoverflow.com/a/33962018/333127) для работы с EF6, поэтому я сейчас удержался. – cbranch