1 //------------------------------------------------------------ 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //------------------------------------------------------------ 4 namespace System.ServiceModel 5 { 6 using System.Net; 7 using System.Runtime; 8 9 public enum HttpClientCredentialType 10 { 11 None, 12 Basic, 13 Digest, 14 Ntlm, 15 Windows, 16 Certificate, 17 InheritedFromHost 18 } 19 20 static class HttpClientCredentialTypeHelper 21 { IsDefined(HttpClientCredentialType value)22 internal static bool IsDefined(HttpClientCredentialType value) 23 { 24 return (value == HttpClientCredentialType.None || 25 value == HttpClientCredentialType.Basic || 26 value == HttpClientCredentialType.Digest || 27 value == HttpClientCredentialType.Ntlm || 28 value == HttpClientCredentialType.Windows || 29 value == HttpClientCredentialType.Certificate || 30 value == HttpClientCredentialType.InheritedFromHost); 31 } 32 MapToAuthenticationScheme(HttpClientCredentialType clientCredentialType)33 internal static AuthenticationSchemes MapToAuthenticationScheme(HttpClientCredentialType clientCredentialType) 34 { 35 AuthenticationSchemes result; 36 switch (clientCredentialType) 37 { 38 case HttpClientCredentialType.Certificate: 39 // fall through to None case 40 case HttpClientCredentialType.None: 41 result = AuthenticationSchemes.Anonymous; 42 break; 43 case HttpClientCredentialType.Basic: 44 result = AuthenticationSchemes.Basic; 45 break; 46 case HttpClientCredentialType.Digest: 47 result = AuthenticationSchemes.Digest; 48 break; 49 case HttpClientCredentialType.Ntlm: 50 result = AuthenticationSchemes.Ntlm; 51 break; 52 case HttpClientCredentialType.Windows: 53 result = AuthenticationSchemes.Negotiate; 54 break; 55 case HttpClientCredentialType.InheritedFromHost: 56 result = AuthenticationSchemes.None; 57 break; 58 default: 59 Fx.Assert("unsupported client credential type"); 60 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); 61 } 62 return result; 63 } 64 MapToClientCredentialType(AuthenticationSchemes authenticationSchemes)65 internal static HttpClientCredentialType MapToClientCredentialType(AuthenticationSchemes authenticationSchemes) 66 { 67 HttpClientCredentialType result; 68 switch (authenticationSchemes) 69 { 70 case AuthenticationSchemes.Anonymous: 71 result = HttpClientCredentialType.None; 72 break; 73 case AuthenticationSchemes.Basic: 74 result = HttpClientCredentialType.Basic; 75 break; 76 case AuthenticationSchemes.Digest: 77 result = HttpClientCredentialType.Digest; 78 break; 79 case AuthenticationSchemes.Ntlm: 80 result = HttpClientCredentialType.Ntlm; 81 break; 82 case AuthenticationSchemes.Negotiate: 83 result = HttpClientCredentialType.Windows; 84 break; 85 default: 86 Fx.Assert("unsupported client AuthenticationScheme"); 87 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); 88 } 89 return result; 90 } 91 } 92 } 93