SamlAttribute 类

定义

表示与 SamlAttributeStatement 的主题相关联的属性。

public ref class SamlAttribute
public class SamlAttribute
type SamlAttribute = class
Public Class SamlAttribute
继承
SamlAttribute

示例

protected override Collection<SamlAttribute> GetIssuedClaims(RequestSecurityToken RST)
{
    EndpointAddress rstAppliesTo = RST.AppliesTo;

    if (rstAppliesTo == null)
    {
        throw new InvalidOperationException("No AppliesTo EndpointAddress in RequestSecurityToken");
    }

    string bookName = rstAppliesTo.Headers.FindHeader(Constants.BookNameHeaderName, Constants.BookNameHeaderNamespace).GetValue<string>();
    if (string.IsNullOrEmpty(bookName))
        throw new FaultException("The book name was not specified in the RequestSecurityToken");

    EnsurePurchaseLimitSufficient(bookName);

    Collection<SamlAttribute> samlAttributes = new Collection<SamlAttribute>();

    foreach (ClaimSet claimSet in ServiceSecurityContext.Current.AuthorizationContext.ClaimSets)
    {
        // Copy Name claims from the incoming credentials into the set of claims to be issued.
        IEnumerable<Claim> nameClaims = claimSet.FindClaims(ClaimTypes.Name, Rights.PossessProperty);
        if (nameClaims != null)
        {
            foreach (Claim nameClaim in nameClaims)
            {
                samlAttributes.Add(new SamlAttribute(nameClaim));
            }
        }
    }
    // Add a purchase authorized claim.
    samlAttributes.Add(new SamlAttribute(new Claim(Constants.PurchaseAuthorizedClaim, bookName, Rights.PossessProperty)));
    return samlAttributes;
}
Protected Overrides Function GetIssuedClaims(ByVal RST As RequestSecurityToken) As Collection(Of SamlAttribute)

    Dim rstAppliesTo As EndpointAddress = RST.AppliesTo

    If rstAppliesTo Is Nothing Then
        Throw New InvalidOperationException("No AppliesTo EndpointAddress in RequestSecurityToken")
    End If

    Dim bookName As String = rstAppliesTo.Headers.FindHeader(Constants.BookNameHeaderName, Constants.BookNameHeaderNamespace).GetValue(Of String)()

    If String.IsNullOrEmpty(bookName) Then
        Throw New FaultException("The book name was not specified in the RequestSecurityToken")
    End If
    EnsurePurchaseLimitSufficient(bookName)

    Dim samlAttributes As New Collection(Of SamlAttribute)()

    Dim claimSet As ClaimSet
    For Each claimSet In ServiceSecurityContext.Current.AuthorizationContext.ClaimSets
        ' Copy Name claims from the incoming credentials into the set of claims we're going to issue
        Dim nameClaims As IEnumerable(Of Claim) = claimSet.FindClaims(ClaimTypes.Name, Rights.PossessProperty)
        If Not (nameClaims Is Nothing) Then
            Dim nameClaim As Claim
            For Each nameClaim In nameClaims
                samlAttributes.Add(New SamlAttribute(nameClaim))
            Next nameClaim
        End If
    Next claimSet
    ' add a purchase authorized claim
    samlAttributes.Add(New SamlAttribute(New Claim(Constants.PurchaseAuthorizedClaim, bookName, Rights.PossessProperty)))
    Return samlAttributes

End Function

注解

SamlAttribute 类对应于 OASIS SAML 1.1 规范中定义的 <saml:Attribute> XML 元素。

SamlAttribute 实例包含 PossessProperty 的主题的 SamlAttributeStatement 声明。 例如,SamlAttribute 可能包含一个 Over21 声明,其类型在 Namespace 属性中指定,其资源作为集合的成员在 AttributeValues 属性中指定。 调用 CreatePolicy 方法时,此 Over21 声明被添加到由 SamlAttributeStatement 返回的授权策略中。 如果 AttributeValues 属性包含多个元素,则为每一个元素返回一个声明。

SamlAttribute SAML 对象层次结构中的位置为:

SamlSecurityToken

SamlAssertion

SamlAttributeStatement

SamlAttribute

构造函数

SamlAttribute()

初始化 SamlAttribute 类的新实例。

SamlAttribute(Claim)

使用指定的声明初始化 SamlAttribute 类的新实例。

SamlAttribute(String, String, IEnumerable<String>)

使用指定的属性名称、XML 命名空间和属性值来初始化 SamlAttribute 类的新实例。

属性

AttributeValues

获取 SAML 属性的属性值集合。

AttributeValueXsiType

获取或设置包含在 SAML 特性中的值的 xsi:type。

IsReadOnly

获取一个值,该值指示此实例的属性是否是只读的。

Name

获取或设置 SAML 属性的名称。

Namespace

获取或设置在其中定义 SAML 属性的名称的 XML 命名空间。

OriginalIssuer

获取或设置字符串表示 SAML 特性原始颁发者的字符串的名称。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
ExtractClaims()

获取该 SAML 属性表示的声明的集合。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MakeReadOnly()

将此实例设置为只读的。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ReadXml(XmlDictionaryReader, SamlSerializer, SecurityTokenSerializer, SecurityTokenResolver)

从指定的 XML 读取器读取 SAML 属性。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
WriteXml(XmlDictionaryWriter, SamlSerializer, SecurityTokenSerializer)

将 SAML 属性写入指定的 XML 序列化程序。

适用于