Obiekty główne i obiekty tożsamości

Uwaga

Ten artykuł dotyczy systemu Windows.

Aby uzyskać informacje na temat ASP.NET Core, zobacz ASP.NET Core Security.

Kod zarządzany może odnaleźć tożsamość lub rolę podmiotu zabezpieczeń za pośrednictwem IPrincipal obiektu, który zawiera odwołanie do IIdentity obiektu. Warto porównać obiekty tożsamości i podmiotów zabezpieczeń z znanymi pojęciami, takimi jak konta użytkowników i grup. W większości środowisk sieciowych konta użytkowników reprezentują osoby lub programy, a konta grup reprezentują określone kategorie użytkowników i posiadane prawa. Podobnie obiekty tożsamości platformy .NET reprezentują użytkowników, a role reprezentują członkostwa i konteksty zabezpieczeń. Na platformie .NET obiekt główny hermetyzuje zarówno obiekt tożsamości, jak i rolę. Aplikacje platformy .NET udzielają uprawnień podmiotowi zabezpieczeń na podstawie tożsamości lub, częściej, członkostwa w rolach.

Obiekty tożsamości

Obiekt tożsamości hermetyzuje informacje o zweryfikowanym użytkowniku lub jednostce. Na najbardziej podstawowym poziomie obiekty tożsamości zawierają nazwę i typ uwierzytelniania. Nazwa może być nazwą użytkownika lub nazwą konta systemu Windows, a typ uwierzytelniania może być obsługiwanym protokołem logowania, takim jak Kerberos V5 lub wartość niestandardowa. .NET definiuje GenericIdentity obiekt, który może być używany w większości niestandardowych scenariuszy logowania i bardziej wyspecjalizowany WindowsIdentity obiekt, który może być używany, gdy aplikacja ma polegać na uwierzytelnianiu systemu Windows. Ponadto można zdefiniować własną klasę tożsamości, która hermetyzuje niestandardowe informacje o użytkowniku.

Interfejs IIdentity definiuje właściwości uzyskiwania dostępu do nazwy i typu uwierzytelniania, takiego jak Kerberos V5 lub NTLM. Wszystkie klasy tożsamości implementują interfejs IIdentity . Nie ma wymaganej relacji między obiektem Identity i tokenem procesu systemu Windows, w ramach którego jest obecnie wykonywany wątek. Jeśli jednak obiekt Identity jest obiektem WindowsIdentity, przyjmuje się, że tożsamość reprezentuje token zabezpieczający systemu Windows.

Obiekty główne

Obiekt podmiotu zabezpieczeń reprezentuje kontekst zabezpieczeń, w którym jest uruchomiony kod. Aplikacje implementujące prawa udzielania zabezpieczeń oparte na rolach na podstawie roli skojarzonej z obiektem głównym. Podobnie jak obiekty tożsamości, platforma .NET udostępnia GenericPrincipal obiekt i WindowsPrincipal obiekt. Można również zdefiniować własne niestandardowe klasy podmiotów zabezpieczeń.

Interfejs IPrincipal definiuje właściwość umożliwiającą uzyskiwanie dostępu do skojarzonego obiektu tożsamości , a także metodę określania, czy użytkownik zidentyfikowany przez obiekt Principal jest członkiem danej roli. Wszystkie klasy principal implementują interfejs IPrincipal , a także wszelkie dodatkowe właściwości i metody, które są niezbędne. Na przykład środowisko uruchomieniowe języka wspólnego udostępnia klasę WindowsPrincipal , która implementuje dodatkowe funkcje mapowania członkostwa w grupie na role.

Obiekt Principal jest powiązany z obiektem kontekstu wywołania (CallContext) w domenie aplikacji (AppDomain). Domyślny kontekst wywołania jest zawsze tworzony z każdym nowym elementem AppDomain, więc zawsze istnieje kontekst wywołania dostępny do akceptowania obiektu Principal . Po utworzeniu nowego wątku dla wątku jest również tworzony obiekt CallContext . Odwołanie do obiektu Principal jest automatycznie kopiowane z wątku tworzenia do elementu CallContext nowego wątku. Jeśli środowisko uruchomieniowe nie może określić, który obiekt podmiotu zabezpieczeń należy do twórcy wątku, jest zgodny z domyślnymi zasadami tworzenia obiektu Podmiot zabezpieczeń i tożsamości .

Konfigurowalne zasady specyficzne dla domeny aplikacji definiują reguły podejmowania decyzji o typie obiektu Principal do skojarzenia z nową domeną aplikacji. Jeśli zasady zabezpieczeń zezwalają, środowisko uruchomieniowe może tworzyć obiekty podmiotów zabezpieczeń i tożsamości , które odzwierciedlają token systemu operacyjnego skojarzony z bieżącym wątkiem wykonywania. Domyślnie środowisko uruchomieniowe używa obiektów Principal i Identity , które reprezentują nieuwierzytelnionych użytkowników. Środowisko uruchomieniowe nie tworzy tych domyślnych obiektów podmiotu zabezpieczeń i tożsamości , dopóki kod nie podejmie próby uzyskania do nich dostępu.

Zaufany kod, który tworzy domenę aplikacji, może ustawić zasady domeny aplikacji kontrolujące konstruowanie domyślnych obiektów podmiotu zabezpieczeń i tożsamości . Te zasady specyficzne dla domeny aplikacji dotyczą wszystkich wątków wykonywania w tej domenie aplikacji. Niezarządzany zaufany host z założenia ma możliwość ustawiania tych zasad, ale kod zarządzany, który ustawia te zasady, musi mieć System.Security.Permissions.SecurityPermission właściwość do kontrolowania zasad domeny.

Podczas przesyłania obiektu principal w domenach aplikacji, ale w ramach tego samego procesu (i w związku z tym na tym samym komputerze), infrastruktura komunikacji telefonicznej kopiuje odwołanie do obiektu Principal skojarzonego z kontekstem obiektu wywołującego do kontekstu wywoływanego.

Zobacz też