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