2010-06-11 4 views
0

Comment accomplir ce que fait Salesforce.com pour se connecter avec WCF? Je voudrais avoir un service d'authentification qui renvoie un jeton sur une connexion correcte. Ensuite, chaque ensemble d'appels de service repasserait le jeton. Je ne veux pas passer le jeton à chaque appel de méthode.WCF Emule le service de connexion Salesforce.com

Ce qui me lance, c'est la façon dont l'en-tête de la session fait partie de la liaison.

Je suis également à la recherche de pourquoi c'est ou ce n'est pas une bonne idée. Je pense que c'est propre et simple.

Merci!

// Create service object 

    binding = new SforceService(); 
    // Invoke the login call and save results in LoginResult 

    LoginResult lr = binding.login("username","password"); 
    if (!lr.passwordExpired) { 
    // Reset the SOAP endpoint to the returned server URL 

    binding.Url = lr.serverUrl; 
    // Create a new session header object 

    // Add the session ID returned from the login 

    binding.SessionHeaderValue = new SessionHeader(); 
    binding.SessionHeaderValue.sessionId = lr.sessionId; 
    GetUserInfoResult userInfo = lr.userInfo; 
    } else { 
    Console.WriteLine("Your password is expired."); 
    } 
+0

Il semble que vous cherchiez à ajouter un en-tête SOAP personnalisé ... J'ai fait cela en .NET en utilisant un System.Web.Services.WebService, et serais choqué s'il n'y avait pas moyen de le faire en WCF. Cette question est similaire et a une réponse acceptée: http://stackoverflow.com/questions/321764/wcf-and-custom-soap-authentication – dana

Répondre

0

Je crois que vous cherchez à tirer parti de la Windows Identity Foundation et son modèle de service/STS jeton de sécurité.

+0

Chris, je ne suis pas inquiet de fournir le jeton autant que j'essaie d'utiliser il. Je ne comprends pas comment l'attacher à la liaison comme le fait SalesForce ou comment le retirer dans le service. –

+0

Si vous utilisez WIF, vous auriez tout ce qui est cuit, si vous souhaitez l'implémenter vous-même, tout ce que vous devez faire est de passer le jeton dans un cookie de session, puis de valider le cookie à chaque requête. –

+0

Merci Chris, j'espérais pouvoir le faire sans cookies directement sur la reliure. Que se passe-t-il si le client qui consomme le service n'est pas .Net? –