/ / Uwierzytelnianie oparte na roszczeniach: Czy łańcuchy stanowią istotę roszczeń? - bezpieczeństwo, wif, tożsamość roszczeń, roszczenia

Uwierzytelnianie oparte na roszczeniach: Czy ciągi stanowią istotę roszczeń? - bezpieczeństwo, wif, tożsamość roszczeń, roszczenia

Już od jakiegoś czasu programowałem z uwierzytelnianiem opartym na roszczeniach Windows Identity Foundation.

Wydaje mi się, że w Windows Identity Foundation, gdy użytkownik jest zalogowany, roszczenia są w zasadzie ciągami informacji, które opisują użytkownika.

Dzięki starszemu uwierzytelnianiu opartemu na rolach mogłempowiedzmy, że użytkownik jest lub nie jest członkiem danej grupy, ale z uwierzytelnianiem opartym na roszczeniach, mogę teraz mieć ciągi informacji opisujące użytkownika. "Ten użytkownik to kobieta". Ten użytkownik urodził się "6 lipca 1975 roku". "Ten użytkownik zalogował się przy użyciu klucza USB".

Czy jest to istota uwierzytelniania opartego na roszczeniach, że mam ciągi informacji o użytkowniku podanym aplikacji przez framework?

Odpowiedzi:

3 dla odpowiedzi № 1

Roszczenia to atrybuty dotyczące podmiotu wchodzącego w interakcję z aplikacją i mogą być byle co. Wszystkie podane przykłady są w zasadzie poprawne.

To dlatego możesz używać roszczeń dla więcej niż tylkozasady autoryzacji jazdy. Mogą również reprezentować na przykład informacje o profilu użytkownika. Przynależność do roli jest tylko kolejnym atrybutem (najczęściej używanym do kontroli dostępu).

Kilka obserwacji:

  • Jedna subtelna, ale bardzo ważna różnica polega na tymroszczenia są wydawane przez zaufany, autorytatywny podmiot (STS). Pochodzenie roszczenia jest tak samo ważne jak samo roszczenie. Aby użyć prostego przykładu: jeśli wyślę Ci token wydany przez STS Microsoftu z roszczeniem "Title = Program Manager", prawdopodobnie będziesz miał dużą pewność, że jestem premierem pracującym dla Microsoft. korelacja pomiędzy wiernością atrybutów, które otrzymujesz, a poziomem zaufania, jakim darzysz wystawcę.
  • W wartościach roszczeń WIF są zaimplementowane jako "łańcuchy"(jak w typie .NET), ale może to być dowolny (możliwy do serializacji) obiekt. W przypadku prostych rzeczy, takich jak role, grupy, nazwiska itp., Po prostu korzystasz z wartości. W przypadku innych bardziej złożonych typów będziesz potrzebował jakiejś deserializacji.