2 // ClientCredentials.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005-2006 Novell, Inc. http://www.novell.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System
.Collections
.Generic
;
30 using System
.ServiceModel
.Channels
;
31 using System
.ServiceModel
.Description
;
32 using System
.ServiceModel
.Dispatcher
;
33 using System
.ServiceModel
.Security
;
35 using System
.IdentityModel
.Selectors
;
36 using System
.IdentityModel
.Tokens
;
37 using System
.ServiceModel
.Security
.Tokens
;
40 namespace System
.ServiceModel
.Description
42 public class ClientCredentials
46 : SecurityCredentialsManager
, IEndpointBehavior
49 public ClientCredentials ()
54 protected ClientCredentials (ClientCredentials source
)
56 throw new NotImplementedException ();
59 UserNamePasswordClientCredential userpass
=
60 new UserNamePasswordClientCredential ();
62 IssuedTokenClientCredential issued_token
=
63 new IssuedTokenClientCredential ();
64 HttpDigestClientCredential digest
=
65 new HttpDigestClientCredential ();
66 X509CertificateInitiatorClientCredential initiator
=
67 new X509CertificateInitiatorClientCredential ();
68 X509CertificateRecipientClientCredential recipient
=
69 new X509CertificateRecipientClientCredential ();
70 WindowsClientCredential windows
=
71 new WindowsClientCredential ();
72 PeerCredential peer
= new PeerCredential ();
73 bool support_interactive
= true;
75 public X509CertificateInitiatorClientCredential ClientCertificate
{
76 get { return initiator; }
79 public HttpDigestClientCredential HttpDigest
{
80 get { return digest; }
83 public IssuedTokenClientCredential IssuedToken
{
84 get { return issued_token; }
87 public PeerCredential Peer
{
91 public X509CertificateRecipientClientCredential ServiceCertificate
{
92 get { return recipient; }
95 public bool SupportInteractive
{
96 get { return support_interactive; }
97 set { support_interactive = value; }
100 public WindowsClientCredential Windows
{
101 get { return windows; }
105 public UserNamePasswordClientCredential UserName
{
106 get { return userpass; }
109 public ClientCredentials
Clone ()
111 ClientCredentials ret
= CloneCore ();
112 if (ret
.GetType () != GetType ())
113 throw new NotImplementedException ("CloneCore() must be implemented to return an instance of the same type in this custom ClientCredentials type.");
117 protected virtual ClientCredentials
CloneCore ()
119 return new ClientCredentials (this);
123 public override SecurityTokenManager
CreateSecurityTokenManager ()
125 return new ClientCredentialsSecurityTokenManager (this);
129 protected virtual SecurityToken
GetInfoCardSecurityToken (
130 bool requiresInfoCard
, CardSpacePolicyElement
[] chain
,
131 SecurityTokenSerializer tokenSerializer
)
133 throw new NotImplementedException ();
136 void IEndpointBehavior
.ApplyDispatchBehavior (ServiceEndpoint endpoint
,
137 EndpointDispatcher dispatcher
)
139 // documented as to have no effect.
144 void IEndpointBehavior
.AddBindingParameters (ServiceEndpoint endpoint
,
145 BindingParameterCollection parameters
)
147 parameters
.Add (this);
151 public virtual void ApplyClientBehavior (
152 ServiceEndpoint endpoint
, ClientRuntime behavior
)
154 if (endpoint
== null)
155 throw new ArgumentNullException ("endpoint");
156 if (behavior
== null)
157 throw new ArgumentNullException ("behavior");
159 // FIXME: apply to endpoint when there is not security binding element.
162 void IEndpointBehavior
.Validate (ServiceEndpoint endpoint
)
164 // documented as reserved for future use.