e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
120 lines
3.8 KiB
C#
120 lines
3.8 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace System.IdentityModel.Tokens
|
|
{
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Security.Principal;
|
|
using System.IdentityModel.Claims;
|
|
using System.IdentityModel.Policy;
|
|
using System.IdentityModel.Tokens;
|
|
|
|
public class WindowsSecurityToken : SecurityToken, IDisposable
|
|
{
|
|
string authenticationType;
|
|
string id;
|
|
DateTime effectiveTime;
|
|
DateTime expirationTime;
|
|
WindowsIdentity windowsIdentity;
|
|
bool disposed = false;
|
|
|
|
public WindowsSecurityToken(WindowsIdentity windowsIdentity)
|
|
: this(windowsIdentity, SecurityUniqueId.Create().Value)
|
|
{
|
|
}
|
|
|
|
public WindowsSecurityToken(WindowsIdentity windowsIdentity, string id)
|
|
: this(windowsIdentity, id, null)
|
|
{
|
|
}
|
|
|
|
public WindowsSecurityToken(WindowsIdentity windowsIdentity, string id, string authenticationType)
|
|
{
|
|
DateTime effectiveTime = DateTime.UtcNow;
|
|
Initialize( id, authenticationType, effectiveTime, DateTime.UtcNow.AddHours( 10 ), windowsIdentity, true );
|
|
}
|
|
|
|
protected WindowsSecurityToken()
|
|
{
|
|
}
|
|
|
|
protected void Initialize(string id, DateTime effectiveTime, DateTime expirationTime, WindowsIdentity windowsIdentity, bool clone)
|
|
{
|
|
Initialize( id, null, effectiveTime, expirationTime, windowsIdentity, clone );
|
|
}
|
|
|
|
protected void Initialize(string id, string authenticationType, DateTime effectiveTime, DateTime expirationTime, WindowsIdentity windowsIdentity, bool clone)
|
|
{
|
|
|
|
if (windowsIdentity == null)
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("windowsIdentity");
|
|
|
|
if (id == null)
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("id");
|
|
|
|
this.id = id;
|
|
this.authenticationType = authenticationType;
|
|
this.effectiveTime = effectiveTime;
|
|
this.expirationTime = expirationTime;
|
|
this.windowsIdentity = clone ? SecurityUtils.CloneWindowsIdentityIfNecessary(windowsIdentity, authenticationType) : windowsIdentity;
|
|
}
|
|
|
|
public override string Id
|
|
{
|
|
get { return this.id; }
|
|
}
|
|
|
|
public string AuthenticationType
|
|
{
|
|
get { return this.authenticationType; }
|
|
}
|
|
|
|
public override DateTime ValidFrom
|
|
{
|
|
get { return this.effectiveTime; }
|
|
}
|
|
|
|
public override DateTime ValidTo
|
|
{
|
|
get { return this.expirationTime; }
|
|
}
|
|
|
|
public virtual WindowsIdentity WindowsIdentity
|
|
{
|
|
get
|
|
{
|
|
ThrowIfDisposed();
|
|
return this.windowsIdentity;
|
|
}
|
|
}
|
|
|
|
public override ReadOnlyCollection<SecurityKey> SecurityKeys
|
|
{
|
|
get { return EmptyReadOnlyCollection<SecurityKey>.Instance; }
|
|
}
|
|
|
|
public virtual void Dispose()
|
|
{
|
|
if (!this.disposed)
|
|
{
|
|
this.disposed = true;
|
|
if (this.windowsIdentity != null)
|
|
{
|
|
this.windowsIdentity.Dispose();
|
|
this.windowsIdentity = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void ThrowIfDisposed()
|
|
{
|
|
if (this.disposed)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ObjectDisposedException(this.GetType().FullName));
|
|
}
|
|
}
|
|
}
|
|
}
|