| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //-----------------------------------------------------------------------------
- // 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)));
- }
- }
- }
- }
|