| File: System\ServiceModel\Security\Tokens\SspiSecurityTokenParameters.cs | Web Access |
| Project: ..\..\..\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Globalization; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; using System.ServiceModel.Channels; using System.Text; namespace System.ServiceModel.Security.Tokens { public class SspiSecurityTokenParameters : SecurityTokenParameters { internal const bool DefaultRequireCancellation = false; private bool _requireCancellation = DefaultRequireCancellation; private BindingContext _issuerBindingContext; public SspiSecurityTokenParameters() : this(DefaultRequireCancellation) { } public SspiSecurityTokenParameters(bool requireCancellation) : base() { _requireCancellation = requireCancellation; } protected SspiSecurityTokenParameters(SspiSecurityTokenParameters other) : base(other) { _requireCancellation = other._requireCancellation; if (other._issuerBindingContext != null) { _issuerBindingContext = other._issuerBindingContext.Clone(); } } internal protected override bool HasAsymmetricKey { get { return false; } } public bool RequireCancellation { get { return _requireCancellation; } set { _requireCancellation = value; } } internal BindingContext IssuerBindingContext { get { return _issuerBindingContext; } set { if (value != null) { value = value.Clone(); } _issuerBindingContext = value; } } internal protected override bool SupportsClientAuthentication { get { return true; } } internal protected override bool SupportsServerAuthentication { get { return true; } } internal protected override bool SupportsClientWindowsIdentity { get { return true; } } protected override SecurityTokenParameters CloneCore() { return new SspiSecurityTokenParameters(this); } internal protected override SecurityKeyIdentifierClause CreateKeyIdentifierClause(SecurityToken token, SecurityTokenReferenceStyle referenceStyle) { if (token is GenericXmlSecurityToken) { return base.CreateGenericXmlTokenKeyIdentifierClause(token, referenceStyle); } else { return CreateKeyIdentifierClause<SecurityContextKeyIdentifierClause, LocalIdKeyIdentifierClause>(token, referenceStyle); } } protected internal override void InitializeSecurityTokenRequirement(SecurityTokenRequirement requirement) { requirement.TokenType = ServiceModelSecurityTokenTypes.Spnego; requirement.RequireCryptographicToken = true; requirement.KeyType = SecurityKeyType.SymmetricKey; requirement.Properties[ServiceModelSecurityTokenRequirement.SupportSecurityContextCancellationProperty] = RequireCancellation; if (_issuerBindingContext != null) { requirement.Properties[ServiceModelSecurityTokenRequirement.IssuerBindingContextProperty] = _issuerBindingContext.Clone(); } requirement.Properties[ServiceModelSecurityTokenRequirement.IssuedSecurityTokenParametersProperty] = Clone(); } public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine(base.ToString()); sb.Append(string.Format(CultureInfo.InvariantCulture, "RequireCancellation: {0}", RequireCancellation.ToString())); return sb.ToString(); } } }