|
//-----------------------------------------------------------------------
// <copyright file="Saml2Subject.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace System.IdentityModel.Tokens
{
using System;
using System.Collections.ObjectModel;
/// <summary>
/// Represents the Subject element specified in [Saml2Core, 2.4.1].
/// </summary>
/// <remarks>
/// If the NameId is null and the SubjectConfirmations collection is empty,
/// an InvalidOperationException will be thrown during serialization.
/// </remarks>
public class Saml2Subject
{
private Saml2NameIdentifier nameId;
private Collection<Saml2SubjectConfirmation> subjectConfirmations = new Collection<Saml2SubjectConfirmation>();
/// <summary>
/// Initialize an instance of <see cref="Saml2Subject"/>.
/// </summary>
public Saml2Subject()
{
}
/// <summary>
/// Initializes an instance of <see cref="Saml2Subject"/> from a <see cref="Saml2NameIdentifier"/>.
/// </summary>
/// <param name="nameId">The <see cref="Saml2NameIdentifier"/> to use for initialization.</param>
public Saml2Subject(Saml2NameIdentifier nameId)
{
this.nameId = nameId;
}
/// <summary>
/// Initializes an instance of <see cref="Saml2Subject"/> from a <see cref="Saml2SubjectConfirmation"/>.
/// </summary>
/// <param name="subjectConfirmation">The <see cref="Saml2SubjectConfirmation"/> to use for initialization.</param>
public Saml2Subject(Saml2SubjectConfirmation subjectConfirmation)
{
if (null == subjectConfirmation)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("subjectConfirmation");
}
this.subjectConfirmations.Add(subjectConfirmation);
}
/// <summary>
/// Gets or sets the <see cref="Saml2NameIdentifier"/>. [Saml2Core, 2.4.1]
/// </summary>
public Saml2NameIdentifier NameId
{
get { return this.nameId; }
set { this.nameId = value; }
}
/// <summary>
/// Gets a collection of <see cref="Saml2SubjectConfirmation"/> which can be used to validate and confirm the <see cref="Saml2Subject"/>. [Saml2Core, 2.4.1]
/// </summary>
/// <remarks>
/// If more than one subject confirmation is provied, then satisfying any one of
/// them is sufficient to confirm the subject for the purpose of applying the
/// assertion.
/// </remarks>
public Collection<Saml2SubjectConfirmation> SubjectConfirmations
{
get { return this.subjectConfirmations; }
}
}
}
|