Net, аутентикация и оторизация

данни за идентификация на

Идентифициране на потребителя пускане на приложение може да се постигне чрез прилагане идентификационни данни (идентичност). WindowsIdentity клас дава възможност за представяне на потребителя Windows. В допълнение към сметката на Windows за идентификация на потребителя да използвате и други класове, които прилагат интерфейс IIdentity. Този интерфейс позволява достъп до потребителското име, както и информация за това, дали потребителят е идентифициран, и на истинността на съответния тип.

Водещ (главница) е обект, който съдържа идентичност и ролята на потребителя, към която той принадлежи. Интерфейс IPrincipal идентичност е имот, който връща обект Ildentity и IsInRole метода, по който можете да проверите дали потребителят е наистина членуват в определена роля.

Ролята (роля) е колекция от потребители, които имат сходни права за достъп, и служи като единица за управление на потребители. Както роли могат да действат като група Windows, и се определят от възложителя набори от редове.

В .NET предоставя следните класове на директори: WindowsPrincipal и GenericPrincipal. Въпреки това, с изключение на тези можете да създадете ваши собствени класове на директори, които прилагат IPrincipal интерфейс.

Следващият пример показва как да се създаде приложение конзола, която осигурява достъп до главницата, което от своя страна позволява достъп до основната сметка на Windows.

Първо ще трябва да внася в пространството от имена System.Security.Principal и System.Threading. След това трябва да се уточни, че .NET трябва автоматично да се свърже с главницата за сметка на Windows поради съображения за сигурност, .NET не автоматично попълва CurrentPrincipal имот поток. Това може да стане по следния начин:

метод WindowsIdentity.GetCurrent () може да се използва за достъп до данните на потребителски акаунти на Windows. обаче, е по-подходящо в ситуация, в която се изисква достъп до главницата да получи само веднъж. Ако имате нужда от множествена достъп до главницата, по-добре с метода SetPrincipalPolicy да създаде политика, така че самата текуща поток осигурява достъп до главницата. Този метод показва, че главницата в текущата нишка трябва да поддържа Windows идентичност обект.

Всички те са предназначени да идентифицират класове, като Windows Идентичност, прилагане IIdentity интерфейс. Този интерфейс има три свойства (AuthenticationType, IsAuthenticated и името), за да бъде задължително, изпълнявани във всички класове на идентичност производни.

Добавете следния код за достъп до свойствата на главницата от обекта Тема:

След работа тази заявка конзола продукцията ще се появи приблизително, както е показано по-долу; някои елементи ще варират в зависимост от конфигурацията на машина, използвана и функциите, които са свързани с използването вход предвид:

Net, аутентикация и оторизация

Възможността за лесен достъп до информация за настоящите потребители и техните роли е изключително изгодна. решение може да бъде взето въз основа на тази информация, какви действия да бъдат позволени и които са забранени. Възможността за използване на роли и Windows потребителски групи осигурява допълнително предимство, тъй като тя позволява да се приложи стандартните средства и, като правило, не се нуждае от промяна на кода, в случай на промени в потребителски роли. Следващата част се обсъжда ролята по-подробно.

Декларативен сигурност въз основа на роли

Роля на основата на сигурността (роля на основата на сигурността) е особено полезно в ситуации, при получаване на достъп до ресурси играе много важна роля. Основният пример за това може да послужи като финансовата сфера, където изпълними служители да определят каква роля, каква информация могат да имат достъп и какви действия могат да предприемат.

Роля на основата на сигурността е идеален за използване във връзка с вашите Windows или специална директория за всеки потребител да се контролира достъпа до уеб ресурси. Така например, на интернет страницата на нерегистрираните потребители могат да бъдат предоставени само ограничен достъп до съдържанието му, както и да плащат абонатите - напротив, допълнителен достъп до специално съдържание.

В много отношения, ASP.NET технология прави сигурност въз основа на роли по-прост процес, тъй като позволява да се постави по-голямата част от кода на сървъра. Например, за да се приложи уеб услуга, която изисква преминаване на процедурата по удостоверяване, е достатъчно да използвате една подсистема на сметките на Windows и да напишете уеб метод, така че преди предоставяне на достъп до неговата функционалност на първо място, да се извършват проверки, дали потребителят е член на съответните потребителските групи на Windows.

Помислете за ситуация, при прилагане на интранет, която разчита на използването на сметки на Windows. Да приемем, че системата има група, наречена мениджъри (мениджъри) и сътрудници (сътрудници), а потребителите се отнасят към тези групи според тяхната роля в организацията. Освен това, приложението разполага с функция, която ви позволява да се покаже информация за служителите, достъпът до които е да бъдат само членове на групата мениджъри. Разбира се, вие можете лесно да пишете код, който проверява дали текущият потребител е член на групата на мениджърите, а ако достъп до тази функция е активирана.

Въпреки това, ако по-късно решите да се възстанови за счетоводен отчет на групата и да добавите към тях, например, една група от персонала (персонал), чиито членове трябва да има възможност да получат достъп до информация за служителите, че има проблем. В този случай, необходимостта от преразглеждане на всички отново кода и го актуализира навсякъде, така че да включва правото на новата група.

По-подходящ подход за този сценарий е да се създаде резолюция от името на, например, ReadEmployeeDetails и я възлага на групи, както е необходимо. Ако кодът ви ще бъдат проверени за разрешение ReadEmployeeDetails, за актуализиране на приложението, така че да е възможно да се получи достъп до информация за служителите и членовете на групата персонал просто биха създали група, да сложите в нея желаните потребителите на системата и определяне на разрешение ReadEmployeeDetails.

Както и в кода за защита на достъпа, заявки роля на базата на сигурността (например, като "потребител трябва да е администратор група"), могат да бъдат реализирани или като се обадите на императивно IsInRole () метод на клас IPrincipal, или чрез атрибути. Изисквания по отношение на органа, могат да бъдат определени декларативно в клас или метод атрибут на ниво [PrincipalPermission].

Когато стартирате приложението, в контекста на потребителя, който не е член на местна инициативна група на Windows, наречени Потребители (потребители), ShowMessage () метод ще хвърли изключение.