c# - Is it possible to call Dynamics CRM 2011 late-bound WCF Organization service without the SDK - straight customized binding? -


i'm trying implement pure wcf scenario want call dynamics crm wcf service without relying on sdk helper classes. basically, implement federated authentication against dynamics crm 2011 using native wcf support .net framework.

the reason i'm doing port scenario later-on biztalk.

i've generated proxy classes svcutil, part of policies , security assertions not compatible configuration schema. svcutil suggests build binding code instead, i'm trying do.

the resulting code here:

        private static void callwcf()     {         organizationserviceclient client = null;          try         {             // login live.com issuer binding              var wshttpbinding = new wshttpbinding();             wshttpbinding.security = new wshttpsecurity();             wshttpbinding.security.mode = securitymode.transport;              // endpoint binding elements              var securityelement = new transportsecuritybindingelement();             securityelement.defaultalgorithmsuite = securityalgorithmsuite.tripledes;             securityelement.includetimestamp = true;             securityelement.keyentropymode = securitykeyentropymode.combinedentropy;             securityelement.messagesecurityversion = messagesecurityversion.wssecurity11wstrust13wssecureconversation13wssecuritypolicy12basicsecurityprofile10;             securityelement.securityheaderlayout = securityheaderlayout.strict;              var securitytokenparameters = new issuedsecuritytokenparameters();             securitytokenparameters.inclusionmode = securitytokeninclusionmode.alwaystorecipient;             securitytokenparameters.referencestyle = securitytokenreferencestyle.internal;             securitytokenparameters.requirederivedkeys = false;             securitytokenparameters.tokentype = null;             securitytokenparameters.keytype = securitykeytype.symmetrickey;             securitytokenparameters.keysize = 192;             securitytokenparameters.issueraddress = new endpointaddress("https://login.live.com/extsts.srf");             securitytokenparameters.issuermetadataaddress = null;             securitytokenparameters.defaultmessagesecurityversion = null;             securitytokenparameters.issuerbinding = wshttpbinding;              securityelement.endpointsupportingtokenparameters.signed.add(securitytokenparameters);              var textmessageencodingelement = new textmessageencodingbindingelement();             textmessageencodingelement.maxreadpoolsize = 64;             textmessageencodingelement.maxwritepoolsize = 16;             textmessageencodingelement.messageversion = messageversion.default;             textmessageencodingelement.writeencoding = system.text.encoding.utf8;              textmessageencodingelement.readerquotas.maxstringcontentlength = 8192;             textmessageencodingelement.readerquotas.maxarraylength = 16384;             textmessageencodingelement.readerquotas.maxbytesperread = 4096;             textmessageencodingelement.readerquotas.maxnametablecharcount = 16384;              var httpstransportelement = new httpstransportbindingelement();             httpstransportelement.manualaddressing = false;             httpstransportelement.authenticationscheme = system.net.authenticationschemes.anonymous;              custombinding binding = new custombinding();             binding.elements.add(securityelement);             binding.elements.add(textmessageencodingelement);             binding.elements.add(httpstransportelement);              client = new organizationserviceclient(binding, new endpointaddress(endpointuri));             client.clientcredentials.username.username = username;             client.clientcredentials.username.password = password;             client.open();              var columnset = new schemas.microsoft.com.xrm._2011.contracts.columnset();             var identifier = new guid("fbf8240e-2c85-e011-ad55-1cc1de0878eb");              columnset.columns = new string[] { "name" };             var entity = client.retrieve("account", identifier, columnset);         }                  {             if (client != null)                 client.close();         }     } 

i'm new federated authentication , having hard time figuring out potential differences between many available bindings, grateful in regard.

it possible, hugely complicated. had project using dynamics moved adfs, , required adding lots of code around refreshing tokens (code form autorefreshsecuritytoken.cs, deviceidmanager.cs , toolserviceproxies.cs sdk) , still using sdk everything.

bare in mind need windows.identification installed in os load of functionality copy.

in end can use justdecompile or similar see sdk doing.


Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -