e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
190 lines
6.0 KiB
C#
190 lines
6.0 KiB
C#
//-----------------------------------------------------------------------
|
|
// <copyright file="Saml2Attribute.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//-----------------------------------------------------------------------
|
|
|
|
namespace System.IdentityModel.Tokens
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
|
|
/// <summary>
|
|
/// Represents the Attribute element specified in [Saml2Core, 2.7.3.1].
|
|
/// </summary>
|
|
public class Saml2Attribute
|
|
{
|
|
private string friendlyName;
|
|
private string name;
|
|
private Uri nameFormat;
|
|
private Collection<string> values = new Collection<string>();
|
|
private string originalIssuer;
|
|
private string attributeValueXsiType = System.Security.Claims.ClaimValueTypes.String;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the Saml2Attribute class.
|
|
/// </summary>
|
|
/// <param name="name">The name of the attribute.</param>
|
|
public Saml2Attribute(string name)
|
|
{
|
|
if (string.IsNullOrEmpty(name))
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name");
|
|
}
|
|
|
|
this.name = StringUtil.OptimizeString(name);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the Saml2Attribute class.
|
|
/// </summary>
|
|
/// <param name="name">The name of the attribute.</param>
|
|
/// <param name="values">The collection of values that define the attribute.</param>
|
|
public Saml2Attribute(string name, IEnumerable<string> values)
|
|
: this(name)
|
|
{
|
|
if (null == values)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("values");
|
|
}
|
|
|
|
foreach (string value in values)
|
|
{
|
|
this.values.Add(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the Saml2Attribute class.
|
|
/// </summary>
|
|
/// <param name="name">The name of the attribute.</param>
|
|
/// <param name="value">The value of the attribute.</param>
|
|
public Saml2Attribute(string name, string value)
|
|
: this(name, new string[] { value })
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a string that provides a more human-readable form of the attribute's
|
|
/// name. [Saml2Core, 2.7.3.1]
|
|
/// </summary>
|
|
public string FriendlyName
|
|
{
|
|
get { return this.friendlyName; }
|
|
set { this.friendlyName = XmlUtil.NormalizeEmptyString(value); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the name of the attribute. [Saml2Core, 2.7.3.1]
|
|
/// </summary>
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
return this.name;
|
|
}
|
|
|
|
set
|
|
{
|
|
if (string.IsNullOrEmpty(value))
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value"));
|
|
}
|
|
|
|
this.name = StringUtil.OptimizeString(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a URI reference representing the classification of the attribute
|
|
/// name for the purposes of interpreting the name. [Saml2Core, 2.7.3.1]
|
|
/// </summary>
|
|
public Uri NameFormat
|
|
{
|
|
get
|
|
{
|
|
return this.nameFormat;
|
|
}
|
|
|
|
set
|
|
{
|
|
if (null != value && !value.IsAbsoluteUri)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("error", SR.GetString(SR.ID0013));
|
|
}
|
|
|
|
this.nameFormat = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the string that represents the OriginalIssuer of the this SAML Attribute.
|
|
/// </summary>
|
|
public string OriginalIssuer
|
|
{
|
|
get
|
|
{
|
|
return this.originalIssuer;
|
|
}
|
|
|
|
set
|
|
{
|
|
if (value == String.Empty)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.ID4251));
|
|
}
|
|
|
|
this.originalIssuer = StringUtil.OptimizeString(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the xsi:type of the values contained in the SAML Attribute.
|
|
/// </summary>
|
|
public string AttributeValueXsiType
|
|
{
|
|
get
|
|
{
|
|
return this.attributeValueXsiType;
|
|
}
|
|
|
|
set
|
|
{
|
|
if (string.IsNullOrEmpty(value))
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.ID4254));
|
|
}
|
|
|
|
int indexOfHash = value.IndexOf('#');
|
|
if (indexOfHash == -1)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.ID4254));
|
|
}
|
|
|
|
string prefix = value.Substring(0, indexOfHash);
|
|
if (prefix.Length == 0)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.ID4254));
|
|
}
|
|
|
|
string suffix = value.Substring(indexOfHash + 1);
|
|
if (suffix.Length == 0)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.ID4254));
|
|
}
|
|
|
|
this.attributeValueXsiType = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the values of the attribute.
|
|
/// </summary>
|
|
public Collection<string> Values
|
|
{
|
|
get { return this.values; }
|
|
}
|
|
}
|
|
}
|