Unable to get ADFS saml token from Kerberosmixed endpoint
===

I am trying to request ADFS saml token from STS using Kerberosmixed endpoint (i.e, using Kerberos to authenticate my client to STS). The code is like below:

    EndpointAddress stsEndpoint = new EndpointAddress("https://my.sts.com/adfs/services/trust/13/kerberosmixed");
    KerberosWSTrustBinding kerbBinding = new KerberosWSTrustBinding(SecurityMode.TransportWithMessageCredential);
    WSTrustChannelFactory factory = new WSTrustChannelFactory(kerbBinding, stsEndpoint);
    factory.TrustVersion = TrustVersion.WSTrust13;
    factory.Credentials.SupportInteractive = false;
    WSTrustChannel channel = (WSTrustChannel)factory.CreateChannel();
    RequestSecurityToken requestToken = new RequestSecurityToken(WSTrust13Constants.RequestTypes.Issue, WSTrust13Constants.KeyTypes.Bearer);
    requestToken.AppliesTo = new EndpointAddress(appliesTo);
    SecurityToken token = channel.Issue(requestToken, out rsts);

The code works fine with **.net 4.0**, but throws "MissingMethod" exception for KerberosRequestorSecurityToken constructor with **.net 3.5**. It is clear that the problem is  System.Identitymodel.dll in .net 3.5 does not have the required constructor for KerberosRequestorSecurityToken. For some reason I've to stick to .net 3.5. So my question is, how do I work around this problem and can authenticate using kerberosmixed endpoint? The detail of the exception is below:

    Unhandled Exception: System.MissingMethodException: Method not found: 'Void System.IdentityModel.Tokens.KerberosRequestorSecurityToken..ctor(System.String, System.Security.Principal.TokenImpersonationLevel, System.Net.NetworkCredential, System.String, System.IdentityModel.SafeFreeCredentials)'.

    Server stack trace:
    at System.ServiceModel.ClientCredentialsSecurityTokenManager.KerberosSecurityTokenProviderWrapper.GetTokenCore(TimeSpan timeout)
    at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
    at System.ServiceModel.Security.SecurityProtocol.TryGetSupportingTokens(SecurityProtocolFactory factory, EndpointAddress target, Uri via, Message message, TimeSpan timeout, Boolean isBlockingCall, IList`1& supportingTokens)
    at System.ServiceModel.Security.TransportSecurityProtocol.SecureOutgoingMessageAtInitiator(Message& message, String actor, TimeSpan timeout)
    at System.ServiceModel.Security.TransportSecurityProtocol.SecureOutgoingMessage(Message& message, TimeSpan timeout)
    at System.ServiceModel.Security.SecurityProtocol.SecureOutgoingMessage(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState correlationState)
    at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
    at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

    Exception rethrown at [0]:
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    at Microsoft.IdentityModel.Protocols.WSTrust.IWSTrustContract.Issue(Message message)
    at Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue(RequestSecurityToken rst, RequestSecurityTokenResponse& rstr)
