Dela via


SAML-token och anspråk

SAML-token (Security Assertions Markup Language) är XML-representationer av anspråk. Som standard utfärdas TOKEN för SAML-token som Används av Windows Communication Foundation (WCF) i federerade säkerhetsscenarier.

SAML-token bär -instruktioner som är uppsättningar med anspråk som görs av en entitet om en annan entitet. I federerade säkerhetsscenarier görs till exempel instruktionerna av en säkerhetstokentjänst om en användare i systemet. Tjänsten för säkerhetstoken signerar SAML-token för att ange sanningshalten i de instruktioner som finns i token. Dessutom är SAML-token associerad med kryptografiskt nyckelmaterial som användaren av SAML-token bevisar kunskap om. Det här beviset uppfyller den förlitande parten att SAML-token faktiskt har utfärdats till den användaren. Till exempel i ett typiskt scenario:

  1. En klient begär en SAML-token från en säkerhetstokentjänst och autentiserar till den säkerhetstokentjänsten med hjälp av Windows-autentiseringsuppgifter.

  2. Tjänsten för säkerhetstoken utfärdar en SAML-token till klienten. SAML-token är signerad med ett certifikat som är associerat med säkerhetstokentjänsten och innehåller en bevisnyckel krypterad för måltjänsten.

  3. Klienten tar också emot en kopia av bevisnyckeln. Klienten visar sedan SAML-token för programtjänsten (den förlitande parten) och signerar meddelandet med den bevisnyckeln.

  4. Signaturen över SAML-token talar om för den förlitande parten att säkerhetstokentjänsten utfärdade token. Meddelandesignaturen som skapats med bevisnyckeln talar om för den förlitande parten att token har utfärdats till klienten.

Från anspråk till SamlAttributes

I WCF modelleras uttryck i SAML-token som SamlAttribute objekt, som kan fyllas i direkt från Claim objekt, förutsatt att Claim objektet har en Right egenskap och PossessPropertyResource egenskapen är av typen String. Till exempel:

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)

Kommentar

När SAML-token serialiseras i meddelanden, antingen när de utfärdas av en säkerhetstokentjänst eller när de presenteras av klienter för tjänster som en del av autentiseringen, måste den maximala meddelandestorlekskvoten vara tillräckligt stor för att rymma SAML-token och de andra meddelandedelarna. I normala fall räcker standardkvoterna för meddelandestorlek. Men i fall där en SAML-token är stor eftersom den innehåller hundratals anspråk kan du behöva öka kvoterna för att hantera den serialiserade token. Mer information finns i Säkerhetsöverväganden för data.

Från SamlAttributes till Anspråk

När SAML-token tas emot i meddelanden omvandlas de olika uttrycken i SAML-token till IAuthorizationPolicy objekt som placeras i AuthorizationContext. Anspråken från varje SAML-instruktion returneras av ClaimSets egenskapen AuthorizationContext för och kan undersökas för att avgöra om användaren ska autentiseras och auktoriseras.

Se även