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

Reply via email to