Author: atsushi
Date: 2007-03-01 05:08:20 -0500 (Thu, 01 Mar 2007)
New Revision: 73584
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MessageSecurityBindingSupport.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/ChangeLog
trunk/olive/class/System.ServiceModel/System.ServiceModel/ClientCredentialsSecurityTokenManager.cs
Log:
2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
* MessageSecurityBindingSupport.cs :
Set proper MessageDirection to the requirement after creation.
split CreateTokenAuthenticator() as MessageDirection is different.
Removed extra creation of requirement.
* ClientCredentialsSecurityTokenManager.cs :
internalize IsIssuedSecurityTokenRequirement().
Use SecurityTokenRequirement.ToString().
* ServiceCredentialsSecurityTokenManager.cs :
internalize IsIssuedSecurityTokenRequirement().
Use SecurityTokenRequirement.ToString().
Modified: trunk/olive/class/System.ServiceModel/System.ServiceModel/ChangeLog
===================================================================
--- trunk/olive/class/System.ServiceModel/System.ServiceModel/ChangeLog
2007-03-01 10:04:35 UTC (rev 73583)
+++ trunk/olive/class/System.ServiceModel/System.ServiceModel/ChangeLog
2007-03-01 10:08:20 UTC (rev 73584)
@@ -1,3 +1,9 @@
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * ClientCredentialsSecurityTokenManager.cs :
+ internalize IsIssuedSecurityTokenRequirement().
+ Use SecurityTokenRequirement.ToString().
+
2007-02-27 Atsushi Enomoto <[EMAIL PROTECTED]>
* WSHttpBinding.cs : for UserName credentials, don't require
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel/ClientCredentialsSecurityTokenManager.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel/ClientCredentialsSecurityTokenManager.cs
2007-03-01 10:04:35 UTC (rev 73583)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel/ClientCredentialsSecurityTokenManager.cs
2007-03-01 10:08:20 UTC (rev 73584)
@@ -65,6 +65,7 @@
if (requirement == null)
throw new ArgumentNullException ("requirement");
if (requirement.TokenType ==
SecurityTokenTypes.UserName) {
+ // unsupported
}
else if (requirement.TokenType ==
SecurityTokenTypes.Rsa)
return new RsaSecurityTokenAuthenticator ();
@@ -74,7 +75,7 @@
else
throw new NotImplementedException ();
- throw new NotSupportedException (String.Format ("Token
type '{0}' is not supported to create SecurityTokenAuthenticator.",
requirement.TokenType));
+ throw new NotSupportedException (String.Format
("Security token requirement '{0}' is not supported to create
SecurityTokenAuthenticator.", requirement));
}
@@ -330,7 +331,7 @@
return new WSSecurityTokenSerializer (version);
}
- protected bool IsIssuedSecurityTokenRequirement (
+ protected internal bool IsIssuedSecurityTokenRequirement (
SecurityTokenRequirement requirement)
{
IssuedSecurityTokenParameters dummy;
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
2007-03-01 10:04:35 UTC (rev 73583)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
2007-03-01 10:08:20 UTC (rev 73584)
@@ -1,5 +1,12 @@
2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+ * MessageSecurityBindingSupport.cs :
+ Set proper MessageDirection to the requirement after creation.
+ split CreateTokenAuthenticator() as MessageDirection is different.
+ Removed extra creation of requirement.
+
+2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
+
* MessageSecurityBindingSupport.cs : token authenticator is not
always created on channel-opening stage.
* SecurityBindingElement.cs : use SslSecurityTokenParameters for
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MessageSecurityBindingSupport.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MessageSecurityBindingSupport.cs
2007-03-01 10:04:35 UTC (rev 73583)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MessageSecurityBindingSupport.cs
2007-03-01 10:08:20 UTC (rev 73584)
@@ -168,12 +168,7 @@
return manager.CreateSecurityTokenProvider
(requirement);
}
- public SecurityTokenAuthenticator CreateTokenAuthenticator
(SecurityTokenParameters p, out SecurityTokenResolver resolver)
- {
- SecurityTokenRequirement r = CreateRequirement ();
- p.CallInitializeSecurityTokenRequirement (r);
- return manager.CreateSecurityTokenAuthenticator (r, out
resolver);
- }
+ public abstract SecurityTokenAuthenticator
CreateTokenAuthenticator (SecurityTokenParameters p, out SecurityTokenResolver
resolver);
protected void PrepareAuthenticator ()
{
@@ -187,6 +182,23 @@
authenticator = CreateTokenAuthenticator
(RecipientParameters, out auth_token_resolver);
}
+ protected void InitializeRequirement (SecurityTokenParameters
p, SecurityTokenRequirement r)
+ {
+ p.CallInitializeSecurityTokenRequirement (r);
+
+ // r.Properties [ChannelParametersCollectionProperty] =
+ // r.Properties [ReqType.EndpointFilterTableProperty] =
+ // r.Properties
[ReqType.HttpAuthenticationSchemeProperty] =
+ // r.Properties [ReqType.IsOutOfBandTokenProperty] =
+ // r.Properties [ReqType.IssuerAddressProperty] =
+ // r.Properties [ReqType.MessageDirectionProperty] =
+ r.Properties [ReqType.MessageSecurityVersionProperty] =
Element.MessageSecurityVersion.SecurityTokenVersion;
+ r.Properties [ReqType.SecurityAlgorithmSuiteProperty] =
Element.DefaultAlgorithmSuite;
+ r.Properties [ReqType.SecurityBindingElementProperty] =
Element;
+ // r.Properties
[ReqType.SupportingTokenAttachmentModeProperty] =
+ // r.TransportScheme =
+ }
+
public void Release ()
{
ReleaseCore ();
@@ -245,7 +257,7 @@
requirement.Properties
[ReqType.MessageSecurityVersionProperty] =
Element.MessageSecurityVersion.SecurityTokenVersion;
- targetParams.CallInitializeSecurityTokenRequirement
(requirement);
+ InitializeRequirement (targetParams, requirement);
SecurityTokenProvider provider =
CreateTokenProvider (requirement);
@@ -287,9 +299,6 @@
this.factory = factory;
this.message_to = address;
- SecurityTokenRequirement r = CreateRequirement ();
-
RecipientParameters.CallInitializeSecurityTokenRequirement (r);
-
PrepareAuthenticator ();
// This check is almost extra, though it is needed
@@ -302,7 +311,8 @@
get {
if (encryption_token == null) {
SecurityTokenRequirement r =
CreateRequirement ();
-
RecipientParameters.CallInitializeSecurityTokenRequirement (r);
+ r.Properties
[ReqType.MessageDirectionProperty] = MessageDirection.Input;
+ InitializeRequirement
(RecipientParameters, r);
encryption_token = GetToken (r,
RecipientParameters, SecurityKeyUsage.Exchange);
}
return encryption_token;
@@ -313,7 +323,8 @@
get {
if (signing_token == null) {
SecurityTokenRequirement r =
CreateRequirement ();
-
InitiatorParameters.CallInitializeSecurityTokenRequirement (r);
+ r.Properties
[ReqType.MessageDirectionProperty] = MessageDirection.Input;
+ InitializeRequirement
(InitiatorParameters, r);
signing_token = GetToken (r,
InitiatorParameters, SecurityKeyUsage.Signature);
}
return signing_token;
@@ -341,8 +352,17 @@
SecurityTokenRequirement r = new
InitiatorServiceModelSecurityTokenRequirement ();
// r.Properties [ReqType.IssuerAddressProperty] =
message_to;
r.Properties [ReqType.TargetAddressProperty] =
message_to;
+ // FIXME: set Via
return r;
}
+
+ public override SecurityTokenAuthenticator
CreateTokenAuthenticator (SecurityTokenParameters p, out SecurityTokenResolver
resolver)
+ {
+ SecurityTokenRequirement r = CreateRequirement ();
+ r.Properties [ReqType.MessageDirectionProperty] =
MessageDirection.Output;
+ InitializeRequirement (p, r);
+ return
SecurityTokenManager.CreateSecurityTokenAuthenticator (r, out resolver);
+ }
}
class RecipientMessageSecurityBindingSupport :
MessageSecurityBindingSupport
@@ -367,9 +387,6 @@
{
this.listener = listener;
- SecurityTokenRequirement r = CreateRequirement ();
-
RecipientParameters.CallInitializeSecurityTokenRequirement (r);
-
PrepareAuthenticator ();
// This check is almost extra, though it is needed
@@ -378,6 +395,11 @@
// Not sure if it is limited to this condition, but
// Ssl parameters do not support token provider and
// still do not fail. X509 parameters do fail.
+ //
+ // FIXME: as AsymmetricSecurityBindingElementTest
+ // .ServiceRecipientHasNoKeys() implies, it should be
+ // the recipient's parameters that is used. However
+ // such changes will break some of existing tests...
if (InitiatorParameters.InternalHasAsymmetricKey &&
EncryptionToken == null)
throw new Exception ("INTERNAL ERROR");
@@ -387,6 +409,7 @@
get {
if (encryption_token == null) {
SecurityTokenRequirement r =
CreateRequirement ();
+ r.Properties
[ReqType.MessageDirectionProperty] = MessageDirection.Output;
encryption_token = GetToken (r,
InitiatorParameters, SecurityKeyUsage.Exchange);
}
return encryption_token;
@@ -397,7 +420,8 @@
get {
if (signing_token == null) {
SecurityTokenRequirement r =
CreateRequirement ();
-
RecipientParameters.CallInitializeSecurityTokenRequirement (r);
+ r.Properties
[ReqType.MessageDirectionProperty] = MessageDirection.Input;
+ InitializeRequirement
(RecipientParameters, r);
signing_token = GetToken (r,
RecipientParameters, SecurityKeyUsage.Signature);
}
return signing_token;
@@ -426,6 +450,14 @@
requirement.Properties [ReqType.ListenUriProperty] =
listener.Uri;
return requirement;
}
+
+ public override SecurityTokenAuthenticator
CreateTokenAuthenticator (SecurityTokenParameters p, out SecurityTokenResolver
resolver)
+ {
+ SecurityTokenRequirement r = CreateRequirement ();
+ r.Properties [ReqType.MessageDirectionProperty] =
MessageDirection.Input;
+ InitializeRequirement (p, r);
+ return
SecurityTokenManager.CreateSecurityTokenAuthenticator (r, out resolver);
+ }
}
internal abstract class SecurityBindingElementSupport
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
2007-03-01 10:04:35 UTC (rev 73583)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ChangeLog
2007-03-01 10:08:20 UTC (rev 73584)
@@ -1,6 +1,12 @@
2007-03-01 Atsushi Enomoto <[EMAIL PROTECTED]>
* ServiceCredentialsSecurityTokenManager.cs :
+ internalize IsIssuedSecurityTokenRequirement().
+ Use SecurityTokenRequirement.ToString().
+
+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.
Modified:
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
===================================================================
---
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
2007-03-01 10:04:35 UTC (rev 73583)
+++
trunk/olive/class/System.ServiceModel/System.ServiceModel.Security/ServiceCredentialsSecurityTokenManager.cs
2007-03-01 10:08:20 UTC (rev 73584)
@@ -148,7 +148,7 @@
// FIXME: implement
throw new NotImplementedException ();
}
- throw new NotSupportedException (String.Format ("Token
type '{0}' is not supported", requirement.TokenType));
+ throw new NotSupportedException (String.Format
("Securirty token requirement '{0}' is not supported", requirement));
}
X509SecurityTokenProvider CreateX509SecurityTokenProvider
(SecurityTokenRequirement requirement)
@@ -268,7 +268,7 @@
return new WSSecurityTokenSerializer (ver, bsp);
}
- protected bool IsIssuedSecurityTokenRequirement (
+ protected internal bool IsIssuedSecurityTokenRequirement (
SecurityTokenRequirement requirement)
{
IssuedSecurityTokenParameters dummy;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches