You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			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));
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |