Author: atsushi
Date: 2007-02-28 23:25:20 -0500 (Wed, 28 Feb 2007)
New Revision: 73578
Added:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenAuthenticator.cs
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
trunk/olive/class/System.ServiceModel/System.ServiceModel.dll.sources
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/SecurityBindingElementTest.cs
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/ChangeLog
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/SslSecurityTokenParametersTest.cs
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
Log:
2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
* SslSecurityTokenParameters.cs : more initialization of requirement.
* SslSecurityTokenAuthenticator.cs : new file.
* ServiceCredentialsSecurityTokenManager.cs :
Return ssl token authenticator (just almost stub now).
Ssl does not support token provider, so explicitly throw an error.
* SecurityBindingElementTest.cs : some more test for ssl parameters.
* SslSecurityTokenParametersTest.cs : warning fixes. Test for
creating recipient provider (looks like unsupported).
* ServiceCredentialsSecurityTokenManagerTest.cs : more tests for
AnonymousSslnego token authenticator.
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
2007-03-01 04:25:20 UTC (rev 73578)
@@ -1,3 +1,9 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * ServiceCredentialsSecurityTokenManager.cs :
+ Return ssl token authenticator (just almost stub now).
+ Ssl does not support token provider, so explicitly throw an error.
+
2007-02-22 Atsushi Enomoto <[EMAIL PROTECTED]>
* WSSecurityTokenSerializer.cs : there could be more types than
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -72,8 +72,10 @@
return CreateX509Authenticator (requirement);
if (requirement.TokenType == SecurityTokenTypes.Rsa)
return new RsaSecurityTokenAuthenticator ();
-
- throw new NotImplementedException ();
+ if (requirement.TokenType ==
ServiceModelSecurityTokenTypes.AnonymousSslnego)
+ return new SslSecurityTokenAuthenticator
(requirement);
+ else
+ throw new NotImplementedException ("Not
implemented token type: " + requirement.TokenType);
}
UserNameSecurityTokenAuthenticator CreateUserNameAuthenticator
(SecurityTokenRequirement requirement)
@@ -131,6 +133,8 @@
} else if (requirement.TokenType ==
ServiceModelSecurityTokenTypes.SecurityContext) {
// FIXME: implement
throw new NotImplementedException ();
+ } else if (requirement.TokenType ==
ServiceModelSecurityTokenTypes.AnonymousSslnego) {
+ throw new NotSupportedException (String.Format
("Token type '{0}' is not supported", requirement.TokenType));
} else if (requirement.TokenType ==
ServiceModelSecurityTokenTypes.Spnego) {
// FIXME: implement
throw new NotImplementedException ();
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
2007-03-01 04:25:20 UTC (rev 73578)
@@ -1,3 +1,8 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * SslSecurityTokenParameters.cs : more initialization of requirement.
+ * SslSecurityTokenAuthenticator.cs : new file.
+
2007-02-27 Atsushi Enomoto <[EMAIL PROTECTED]>
* WrappedKeySecurityToken.cs : okkk, HMAC is extra. Just use SHA1,
Added:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenAuthenticator.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenAuthenticator.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenAuthenticator.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -0,0 +1,62 @@
+//
+// SslSecurityTokenProvider.cs
+//
+// Author:
+// Atsushi Enomoto <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2006 Novell, Inc. http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+using System.Net.Security;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Selectors;
+using System.IdentityModel.Tokens;
+using System.Security.Cryptography.X509Certificates;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Security;
+using System.ServiceModel.Security.Tokens;
+
+using ReqType =
System.ServiceModel.Security.Tokens.ServiceModelSecurityTokenRequirement;
+
+namespace System.ServiceModel.Security.Tokens
+{
+ // FIXME: implement all
+ class SslSecurityTokenAuthenticator : SecurityTokenAuthenticator
+ {
+ public SslSecurityTokenAuthenticator (SecurityTokenRequirement
r)
+ {
+ }
+
+ protected override bool CanValidateTokenCore (SecurityToken
token)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override ReadOnlyCollection<IAuthorizationPolicy>
+ ValidateTokenCore (SecurityToken token)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -107,8 +107,13 @@
protected override void InitializeSecurityTokenRequirement
(SecurityTokenRequirement requirement)
{
- requirement.TokenType =
ServiceModelSecurityTokenTypes.AnonymousSslnego;
+ requirement.TokenType =
+ RequireClientCertificate ?
+ ServiceModelSecurityTokenTypes.MutualSslnego :
+ ServiceModelSecurityTokenTypes.AnonymousSslnego;
+ requirement.Properties
[ReqType.RequireCryptographicTokenProperty] = true;
requirement.Properties
[ReqType.SupportSecurityContextCancellationProperty] = RequireCancellation;
+ requirement.KeyType = SecurityKeyType.SymmetricKey;
}
}
}
Modified: trunk/olive/class/System.ServiceModel/System.ServiceModel.dll.sources
===================================================================
--- trunk/olive/class/System.ServiceModel/System.ServiceModel.dll.sources
2007-03-01 04:15:57 UTC (rev 73577)
+++ trunk/olive/class/System.ServiceModel/System.ServiceModel.dll.sources
2007-03-01 04:25:20 UTC (rev 73578)
@@ -558,6 +558,7 @@
System.ServiceModel.Security.Tokens/SecurityTokenReferenceStyle.cs
System.ServiceModel.Security.Tokens/ServiceModelSecurityTokenRequirement.cs
System.ServiceModel.Security.Tokens/ServiceModelSecurityTokenTypes.cs
+System.ServiceModel.Security.Tokens/SslSecurityTokenAuthenticator.cs
System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
System.ServiceModel.Security.Tokens/SslSecurityTokenProvider.cs
System.ServiceModel.Security.Tokens/SspiSecurityToken.cs
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
2007-03-01 04:25:20 UTC (rev 73578)
@@ -1,3 +1,7 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * SecurityBindingElementTest.cs : some more test for ssl parameters.
+
2007-02-13 Atsushi Enomoto <[EMAIL PROTECTED]>
* SecurityBindingElementTest.cs : adding [NotWorking]. It happened to
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/SecurityBindingElementTest.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/SecurityBindingElementTest.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Channels/SecurityBindingElementTest.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -236,7 +236,11 @@
// FIXME: also try different constructor arguments
- // FIXME: test ProtectionTokenParameters
+ // test ProtectionTokenParameters
+ Assert.AreEqual (typeof (SslSecurityTokenParameters),
be.ProtectionTokenParameters.GetType (), "#1");
+ SslSecurityTokenParameters sp =
be.ProtectionTokenParameters as SslSecurityTokenParameters;
+ Assert.AreEqual (true, sp.RequireCancellation, "#2");
+ Assert.AreEqual (true, sp.RequireClientCertificate,
"#3");
}
[Test]
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
2007-03-01 04:25:20 UTC (rev 73578)
@@ -1,3 +1,8 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * ServiceCredentialsSecurityTokenManagerTest.cs : more tests for
+ AnonymousSslnego token authenticator.
+
2007-02-21 Atsushi Enomoto <[EMAIL PROTECTED]>
* WSSecurityTokenSerializerTest.cs : fixed DerivedKeyToken reader
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -28,6 +28,7 @@
using System;
using System.IdentityModel.Selectors;
using System.IdentityModel.Tokens;
+using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Channels;
@@ -57,6 +58,14 @@
}
}
+ class MySslSecurityTokenParameters : SslSecurityTokenParameters
+ {
+ public void InitRequirement (SecurityTokenRequirement r)
+ {
+ InitializeSecurityTokenRequirement (r);
+ }
+ }
+
MyManager def_c;
[SetUp]
@@ -84,8 +93,8 @@
void IsIssuedSecurityTokenRequirement (
SecurityTokenParameters p, bool expected, string label)
{
- ServiceModelSecurityTokenRequirement r =
- new ServiceModelSecurityTokenRequirement ();
+ ReqType r =
+ new ReqType ();
p.InitializeSecurityTokenRequirement (r);
Assert.AreEqual (expected, def_c.IsIssued (r), label);
}
@@ -241,10 +250,44 @@
[Test]
[ExpectedException (typeof (NotSupportedException))]
+ public void CreateProviderAnonSslError ()
+ {
+ RecipientServiceModelSecurityTokenRequirement r =
+ new
RecipientServiceModelSecurityTokenRequirement ();
+ r.TokenType =
ServiceModelSecurityTokenTypes.AnonymousSslnego;
+ r.ListenUri = new Uri ("http://localhost:8080");
+ r.SecurityBindingElement = new
SymmetricSecurityBindingElement ();
+ r.Properties [ReqType.IssuerBindingContextProperty] =
+ new BindingContext (new CustomBinding (), new
BindingParameterCollection ());
+ r.MessageSecurityVersion =
+
MessageSecurityVersion.Default.SecurityTokenVersion;
+ SecurityTokenProvider p =
+ def_c.CreateSecurityTokenProvider (r);
+ Assert.IsNotNull (p, "#1");
+ }
+
+ [Test]
+ [Ignore ("incomplete")]
+ [Category ("NotWorking")]
public void CreateProviderAnonSsl ()
{
RecipientServiceModelSecurityTokenRequirement r =
new
RecipientServiceModelSecurityTokenRequirement ();
+ new MySslSecurityTokenParameters ().InitRequirement (r);
+
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.ChannelParametersCollectionProperty), "#1");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.EndpointFilterTableProperty), "#2");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.HttpAuthenticationSchemeProperty), "#3");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.IsOutOfBandTokenProperty), "#4");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.IssuerAddressProperty), "#5");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.MessageDirectionProperty), "#6");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.MessageSecurityVersionProperty), "#7");
+ //Assert.IsTrue (r.Properties.ContainsKey
(SecurityTokenRequirement.PeerAuthenticationMode), "#8");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.SecurityAlgorithmSuiteProperty), "#9");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.SecurityBindingElementProperty), "#10");
+ Assert.IsFalse (r.Properties.ContainsKey
(ReqType.SupportingTokenAttachmentModeProperty), "#11");
+ Assert.AreEqual (null, r.TransportScheme, "#12");
+
r.TokenType =
ServiceModelSecurityTokenTypes.AnonymousSslnego;
r.ListenUri = new Uri ("http://localhost:8080");
r.SecurityBindingElement = new
SymmetricSecurityBindingElement ();
@@ -252,6 +295,20 @@
new BindingContext (new CustomBinding (), new
BindingParameterCollection ());
r.MessageSecurityVersion =
MessageSecurityVersion.Default.SecurityTokenVersion;
+
+ r.Properties [ReqType.SecurityAlgorithmSuiteProperty] =
+ SecurityAlgorithmSuite.Default;
+ r.TransportScheme = "https";
+
+ r.Properties
[ReqType.ChannelParametersCollectionProperty] = new ChannelParameterCollection
();
+ r.Properties [ReqType.EndpointFilterTableProperty] =
null;
+ r.Properties [ReqType.HttpAuthenticationSchemeProperty]
= AuthenticationSchemes.Anonymous;
+ r.Properties [ReqType.IsOutOfBandTokenProperty] = true;
+ r.Properties [ReqType.IssuerAddressProperty] = new
EndpointAddress ("http://localhost:9090");
+// r.Properties [ReqType.MessageDirectionProperty] =
MessageDirection.Input;
+ r.Properties [ReqType.SecurityBindingElementProperty] =
new SymmetricSecurityBindingElement ();
+ r.Properties
[ReqType.SupportingTokenAttachmentModeProperty] =
SecurityTokenAttachmentMode.Signed;
+
SecurityTokenProvider p =
def_c.CreateSecurityTokenProvider (r);
Assert.IsNotNull (p, "#1");
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/ChangeLog
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/ChangeLog
2007-03-01 04:25:20 UTC (rev 73578)
@@ -1,3 +1,8 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * SslSecurityTokenParametersTest.cs : warning fixes. Test for
+ creating recipient provider (looks like unsupported).
+
2007-02-16 Atsushi Enomoto <[EMAIL PROTECTED]>
* WrappedKeySecurityTokenTest.cs : test GetWrappedKey() value
Modified:
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/SslSecurityTokenParametersTest.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/SslSecurityTokenParametersTest.cs
2007-03-01 04:15:57 UTC (rev 73577)
+++
trunk/olive/class/System.ServiceModel/Test/System.ServiceModel.Security.Tokens/SslSecurityTokenParametersTest.cs
2007-03-01 04:25:20 UTC (rev 73578)
@@ -150,8 +150,7 @@
ClientCredentials cred = new ClientCredentials ();
ClientCredentialsSecurityTokenManager manager =
new ClientCredentialsSecurityTokenManager
(cred);
- SecurityTokenProvider p =
- manager.CreateSecurityTokenProvider (r);
+ manager.CreateSecurityTokenProvider (r);
}
[Test]
@@ -171,8 +170,7 @@
ClientCredentials cred = new ClientCredentials ();
ClientCredentialsSecurityTokenManager manager =
new ClientCredentialsSecurityTokenManager
(cred);
- SecurityTokenProvider p =
- manager.CreateSecurityTokenProvider (r);
+ manager.CreateSecurityTokenProvider (r);
}
[Test]
@@ -192,8 +190,7 @@
ClientCredentials cred = new ClientCredentials ();
ClientCredentialsSecurityTokenManager manager =
new ClientCredentialsSecurityTokenManager
(cred);
- SecurityTokenProvider p =
- manager.CreateSecurityTokenProvider (r);
+ manager.CreateSecurityTokenProvider (r);
}
[Test]
@@ -224,5 +221,27 @@
p.GetToken (TimeSpan.FromSeconds (5));
}
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void CreateRecipientProvider ()
+ {
+ MyParameters tp = new MyParameters ();
+ tp.RequireClientCertificate = true;
+ RecipientServiceModelSecurityTokenRequirement r =
+ new
RecipientServiceModelSecurityTokenRequirement ();
+ tp.InitRequirement (r);
+ r.ListenUri = new Uri ("http://localhost:8080");
+ r.SecurityBindingElement = new
SymmetricSecurityBindingElement ();
+ r.Properties [ReqType.IssuerBindingContextProperty] =
+ new BindingContext (new CustomBinding (),
+ new BindingParameterCollection ());
+ r.MessageSecurityVersion =
MessageSecurityVersion.Default.SecurityTokenVersion;
+
+ ClientCredentials cred = new ClientCredentials ();
+ ClientCredentialsSecurityTokenManager manager =
+ new ClientCredentialsSecurityTokenManager
(cred);
+ manager.CreateSecurityTokenProvider (r);
+ }
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches