autoryzowanie użytkowników

W życiu każdego z nas przychodzi taki moment, kiedy należy pamiętać o odpowiednim zabezpieczeniu się. W końcu nie możemy pozwalać wszystkim na wszystko – rajt?
Pisząc w C# mamy do dyspozycji pewien mechanizm, który może nam pomóc w udostępnianiu części kodu wybranym użytkownikom. Znajduje się on w:

using System.Security.Principal;
using System.Security.Permissions;

Możemy korzystać ze sprawdzania kodu w sposób deklaratywny, poprzez atrybuty przy funkcjach, gdy chcemy odciąć całą metodę dla wybranej grupy użytkowników.

[PrincipalPermission(SecurityAction.Demand, Role = "user")]
void foo(){}
Lub w imperatywny sposób (nie do końca wiem, jak to przetłumaczyć). Zasadnicza różnica polega na możliwości wyłączenie części kodu.
try
{
PrincipalPermission pp = new PrincipalPermission(null, @"BUILTINAdministrators", true);
pp.Demand();
MessageBox.Show("This message box should be only to admins", "Info");
}
catch (System.Security.SecurityException sec_ex)
{
MessageBox.Show(sec_ex.Message, sec_ex.GetType().Name);
}

Oczywiście są już gotowe klasy do tego wszystkiego PrincipalPermission.
Ale wiadomo że trzeba czasem zrobić coś inaczej/lepiej, wtedy trzeba wykorzystać dwa proste interfejsy

IIdentity
IPrincipal

Prosta implementacja i wszystko gotowe.

Jednak! Czasem nie ma potrzeby implementacji tego wszystkiego (jak się jest niezdecydowanym jak wiadomo kto), a wystarczy najprostsza implementacja, wtedy nie ma potrzeby implementacja tych interfejsów, a skorzystać można z gotowego rozwiązania

GenericIdentity
GenericPrincipal

Wszystko można obejrzeć i sprawdzić szczegóły korzystając z tego przygotowanego kodu, który jest dostępny jak zawsze na xp-dev.
Pisane późno w nocy, enyłej mam nadzieję że komuś się przyda.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.