in src/dotnet-svcutil/lib/src/CodeDomFixup/MethodCreationHelper.cs [743:945]
private static void AddWS2007FederationBindingConfiguration(CodeStatementCollection statements, WS2007FederationHttpBinding ws2007FedHttp, bool isIssuerBinding = false)
{
string ResultVarName = "result";
string ResultRef = "result";
string WSTrustTokenVarName = "wsTrustTokenParams";
string IssuerBindingName = "issuerBinding";
string IssuerAddressName = "issuerAddress";
if (ws2007FedHttp.Security.Message.IssuerBinding is WSFederationHttpBinding)
{
ResultVarName = "federationIssuerBinding";
WSTrustTokenVarName = "federationWsTrustTokenParams";
IssuerBindingName = "federationIssuerBinding";
IssuerAddressName = "federationissuerAddress";
}
WS2007FederationHttpBinding defaultBinding = new WS2007FederationHttpBinding();
CodeVariableReferenceExpression wsTrustTokenVar = new CodeVariableReferenceExpression(WSTrustTokenVarName);
CodeVariableReferenceExpression issuerBindingVar = new CodeVariableReferenceExpression(IssuerBindingName);
CodeVariableReferenceExpression issuerBindingVar2 = new CodeVariableReferenceExpression(ResultRef);
CodeVariableReferenceExpression issuerAddressVar = new CodeVariableReferenceExpression(IssuerAddressName);
if (ws2007FedHttp.Security.Message.IssuerBinding != null)
{
if (ws2007FedHttp.Security.Message.IssuerBinding is WS2007FederationHttpBinding ws2007FedHttpIssuer)
{
AddWS2007FederationBindingConfiguration(statements, ws2007FedHttpIssuer, true);
}
else if (ws2007FedHttp.Security.Message.IssuerBinding is WSFederationHttpBinding wsFedHttpIssuer)
{
AddWSFederationBindingConfiguration(statements, wsFedHttpIssuer, true);
}
else
{
AddIssuerBindingConfiguration(statements, ws2007FedHttp.Security.Message.IssuerBinding);
}
}
else
{
statements.Add(
new CodeVariableDeclarationStatement(
typeof(WSHttpBinding),
IssuerBindingName,
new CodeObjectCreateExpression(typeof(WSHttpBinding),
new CodePropertyReferenceExpression(new CodeTypeReferenceExpression(typeof(SecurityMode)), "Transport"))));
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(issuerBindingVar, "Security"),
"Transport"), "ClientCredentialType"),
new CodePropertyReferenceExpression(new CodeTypeReferenceExpression(typeof(System.ServiceModel.HttpClientCredentialType)), "Basic")));
}
statements.Add(
new CodeVariableDeclarationStatement(
typeof(EndpointAddress),
IssuerAddressName,
new CodeObjectCreateExpression(typeof(EndpointAddress),
new CodeObjectCreateExpression(typeof(Uri),
new CodePrimitiveExpression(ws2007FedHttp.Security.Message.IssuerAddress.ToString())))));
//if the WS2007FederationHttpBinding instance's issuer binding is still WSFederationHttpBinding,
//then init the parent WS2007FederationHttpBinding's WSTrustTokenParameters with the already generated WSFederationHttpBinding result var
if (!isIssuerBinding && ws2007FedHttp.Security.Message.IssuerBinding is WSFederationHttpBinding)
{
statements.Add(
new CodeVariableDeclarationStatement(
typeof(System.ServiceModel.Federation.WSTrustTokenParameters),
WSTrustTokenVarName,
new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(System.ServiceModel.Federation.WSTrustTokenParameters)), "CreateWS2007FederationTokenParameters",
issuerBindingVar2, issuerAddressVar)));
}
else
{
statements.Add(
new CodeVariableDeclarationStatement(
typeof(System.ServiceModel.Federation.WSTrustTokenParameters),
WSTrustTokenVarName,
new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(System.ServiceModel.Federation.WSTrustTokenParameters)), "CreateWS2007FederationTokenParameters",
issuerBindingVar, issuerAddressVar)));
}
statements.Add(
new CodeVariableDeclarationStatement(
typeof(System.ServiceModel.Federation.WSFederationHttpBinding),
ResultVarName,
new CodeObjectCreateExpression(typeof(System.ServiceModel.Federation.WSFederationHttpBinding), wsTrustTokenVar)));
CodeVariableReferenceExpression resultVar = new CodeVariableReferenceExpression(ResultVarName);
// Set AllowCookies's default value to true.
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
resultVar,
"AllowCookies"),
new CodePrimitiveExpression(true)));
if (defaultBinding.MessageEncoding != ws2007FedHttp.MessageEncoding)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
resultVar,
"MessageEncoding"),
new CodePropertyReferenceExpression(
new CodeTypeReferenceExpression(typeof(WSMessageEncoding)),
ws2007FedHttp.MessageEncoding.ToString())));
}
if (defaultBinding.TransactionFlow != ws2007FedHttp.TransactionFlow)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
resultVar,
"TransactionFlow"),
new CodePrimitiveExpression(ws2007FedHttp.TransactionFlow)));
}
if (defaultBinding.ReliableSession.Enabled != ws2007FedHttp.ReliableSession.Enabled)
{
if (ws2007FedHttp.ReliableSession.Enabled)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "ReliableSession"),
"Enabled"),
new CodePrimitiveExpression(ws2007FedHttp.ReliableSession.Enabled)));
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "ReliableSession"),
"Ordered"),
new CodePrimitiveExpression(ws2007FedHttp.ReliableSession.Ordered)));
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "ReliableSession"),
"InactivityTimeout"),
new CodePrimitiveExpression(ws2007FedHttp.ReliableSession.InactivityTimeout)));
}
}
if (defaultBinding.Security.Mode != ws2007FedHttp.Security.Mode)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "Security"),
"Mode"),
new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression(typeof(SecurityMode)),
ws2007FedHttp.Security.Mode.ToString())));
}
if (defaultBinding.Security.Message.EstablishSecurityContext != ws2007FedHttp.Security.Message.EstablishSecurityContext)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "Security"),
"Message"),
"EstablishSecurityContext"),
new CodePrimitiveExpression(ws2007FedHttp.Security.Message.EstablishSecurityContext)));
}
if (defaultBinding.Security.Message.NegotiateServiceCredential != ws2007FedHttp.Security.Message.NegotiateServiceCredential)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "Security"),
"Message"),
"NegotiateServiceCredential"),
new CodePrimitiveExpression(ws2007FedHttp.Security.Message.EstablishSecurityContext)));
}
if (defaultBinding.Security.Message.AlgorithmSuite != ws2007FedHttp.Security.Message.AlgorithmSuite)
{
statements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(resultVar, "Security"),
"Message"),
"AlgorithmSuite"),
new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression(typeof(System.ServiceModel.Security.SecurityAlgorithmSuite)),
ws2007FedHttp.Security.Message.AlgorithmSuite.ToString())));
}
if (!isIssuerBinding)
{
statements.Add(new CodeMethodReturnStatement(resultVar));
}
}