Udostępnij za pośrednictwem


Tokeny i oświadczenia języka SAML

Tokeny języka SAML (Security Assertions Markup Language) to reprezentacje XML oświadczeń. Domyślnie tokeny SAML używane przez program Windows Communication Foundation (WCF) w scenariuszach zabezpieczeń federacyjnych są wystawiane tokeny.

Tokeny SAML niosą instrukcje, które są zestawami oświadczeń złożonych przez jedną jednostkę o innej jednostce. Na przykład w scenariuszach zabezpieczeń federacyjnych instrukcje są wykonywane przez usługę tokenu zabezpieczającego o użytkowniku w systemie. Usługa tokenu zabezpieczającego podpisuje token SAML, aby wskazać prawdziwość instrukcji zawartych w tokenie. Ponadto token SAML jest skojarzony z materiałem klucza kryptograficznego, o który użytkownik tokenu SAML potwierdza wiedzę. Ten dowód spełnia wymagania jednostki uzależnionej, że token SAML był w rzeczywistości wystawiony dla tego użytkownika. Na przykład w typowym scenariuszu:

  1. Klient żąda tokenu SAML z usługi tokenu zabezpieczającego, uwierzytelniając się w tej usłudze tokenu zabezpieczającego przy użyciu poświadczeń systemu Windows.

  2. Usługa tokenu zabezpieczającego wystawia token SAML klientowi. Token SAML jest podpisany przy użyciu certyfikatu skojarzonego z usługą tokenu zabezpieczającego i zawiera klucz dowodowy zaszyfrowany dla usługi docelowej.

  3. Klient otrzymuje również kopię klucza dowodowego. Następnie klient przedstawia token SAML do usługi aplikacji ( jednostki uzależnionej) i podpisuje komunikat przy użyciu tego klucza dowodowego.

  4. Podpis za pośrednictwem tokenu SAML informuje jednostkę uzależnioną, że usługa tokenu zabezpieczającego wystawiła token. Podpis komunikatu utworzony przy użyciu klucza dowodowego informuje jednostkę uzależnioną o tym, że token został wystawiony klientowi.

Z oświadczeń do samlAttributes

W programie WCF instrukcje w tokenach SAML są modelowane jako SamlAttribute obiekty, które mogą być wypełniane bezpośrednio z Claim obiektów, pod warunkiem, że Claim obiekt ma Right właściwość PossessProperty , a Resource właściwość jest typu String. Na przykład:

Claim myClaim = new Claim(
    ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)

Uwaga

Gdy tokeny SAML są serializowane w komunikatach, gdy są wystawiane przez usługę tokenu zabezpieczającego lub gdy są one prezentowane przez klientów w ramach uwierzytelniania, maksymalny limit przydziału rozmiaru komunikatów musi być wystarczająco duży, aby pomieścić token SAML i inne części komunikatów. W normalnych przypadkach domyślne limity przydziału rozmiaru komunikatu są wystarczające. Jednak w przypadkach, gdy token SAML jest duży, ponieważ zawiera setki oświadczeń, może być konieczne zwiększenie limitów przydziału, aby pomieścić serializowany token. Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące zabezpieczeń danych.

Z atrybutów SamlAttributes do oświadczeń

Gdy tokeny SAML są odbierane w komunikatach, różne instrukcje w tokenie AuthorizationContextSAML są zamieniane w IAuthorizationPolicy obiekty umieszczone w obiekcie . Oświadczenia z każdej instrukcji SAML są zwracane przez ClaimSets właściwość AuthorizationContext i można zbadać, aby określić, czy uwierzytelnić i autoryzować użytkownika.

Zobacz też