Xamarin Public Jenkins (auto-signing) e79aa3c0ed Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
2016-08-03 10:59:49 +00:00

81 lines
2.2 KiB
C#

//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Security
{
using System;
using System.ServiceModel;
using System.Collections;
using System.Collections.Generic;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.ServiceModel.Security.Tokens;
class NegotiationTokenAuthenticatorState : IDisposable
{
bool isNegotiationCompleted;
SecurityContextSecurityToken serviceToken;
Object thisLock;
public NegotiationTokenAuthenticatorState()
{
thisLock = new Object();
}
public Object ThisLock
{
get
{
return thisLock;
}
}
public bool IsNegotiationCompleted
{
get
{
return this.isNegotiationCompleted;
}
}
public SecurityContextSecurityToken ServiceToken
{
get
{
CheckCompleted();
return this.serviceToken;
}
}
public virtual void Dispose() { }
public void SetServiceToken(SecurityContextSecurityToken token)
{
if (token == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
}
this.serviceToken = token;
this.isNegotiationCompleted = true;
}
public virtual string GetRemoteIdentityName()
{
if (this.isNegotiationCompleted)
{
return SecurityUtils.GetIdentityNamesFromPolicies(this.serviceToken.AuthorizationPolicies);
}
return String.Empty;
}
void CheckCompleted()
{
if (!this.isNegotiationCompleted)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.NegotiationIsNotCompleted)));
}
}
}
}