Требование .NET в трех пространствах имен
Теперь это нечетно. После завершения некоторых исследований решений на основе утверждений в .NET было обнаружено, что разные авторы ссылаются на разные классы в пространстве имен .NET, когда на самом деле говорят по одному и тому же вопросу. Класс требований (не говоря уже о других классах Identity, Principal, Manager, Helper) определен в трех разных пространствах имен.
Понятно, что WIF является отдельным надстройкой для .NET 3.5 и 4.0 и что он переписан и входит в ядро в версии 4.5. Однако это может действительно помочь получить четкие указания относительно того, какой класс использовать для новых проектов (так что порт до 4.5 после может быть проще). У кого-нибудь еще есть дополнительная информация по этому вопросу?
1-я ссылка: http://msdn.microsoft.com/en-us/library/ms572956(v=vs.110) (пространство имен System.IdentityModel.Claims)
2nd: http://msdn.microsoft.com/en-us/library/microsoft.identitymodel.claims.claim.aspx (Microsoft.IdentityModel.Claims)
3rd: (System.Security.Claims.Claim)
Ответы
Ответ 1
Для тех, кто все еще ищет окончательный ответ на этот вопрос, MSDN имеет следующую информацию: System.IdentityModel.Claims Namespace page...
В пространстве имен System.IdentityModel.Claims содержатся классы, которые внедрить основанную на Windows Media Foundation (WCF) модель авторизации идентичности. Эта модель включает класс Claim и класс ClaimSet.
Начиная с .NET Framework 4.5 и интеграция Windows Identity Foundation (WIF) в .NET. Framework, модель идентичности на основе требований WCF была заменена WIF. WIF предоставляет модель объекта идентификации на основе утверждений, которая может быть используется для обеспечения аутентификации и авторизации по нескольким Microsoft, включая CLR, WCF и ASP.NET. WIF классы, которые представляют претензии, типы претензий и удостоверения личности и Принципы, основанные на требованиях, содержатся в System.Security.Claims. Начиная с .NET 4.5, эти следует использовать классы, а не System.IdentityModel.Claims namespace.
Ответ 2
Ответ Microsoft выглядит следующим образом: "WIF-классы теперь распределены между различными сборками, основными из которых являются System.Security.Claims
, System.IdentityModel
и System.IdentityModel.Services
. System.Security.Claims
содержит новые классы ClaimsPrincipal
и ClaimsIdentity
(см. ниже). Все принципы в .NET теперь происходят от ClaimsPrincipal
. Классы из Microsoft.IdentityModel
в WIF 1.0 были распространены главным образом через System.IdentityModel
(конвейер, интеграция WCF) и System.IdentityModel.Services
(поддержка WS-Federation, управление сеансом). Эти изменения отражены также в разделах конфигурации.
Ответ 3
System.IdentityModel.Claims
является частью WCF/.NET 3.0
Microsoft.IdentityModel.Claims
extends System.IdentityModel.Claims
и является классом Windows Identity Foundation.
System.Security.Claims
- это версия .Net 4.5.
Итак, если вы пишете с помощью WIF
, вы должны использовать Microsoft.IdentityModel.Claims
.