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 プロパティに複数の要素が格納されているときは、クレームごとに 1 つの要素が返されます。

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 属性の OriginalIssuer を表す文字列を取得または設定します。

メソッド

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)

指定した XML シリアライザーに SAML 属性を書き込みます。

適用対象