WCF模拟Salesforce.com登录服务
如何实现Salesforce.com使用WCF登录的功能?我希望有一个身份验证服务,在正确登录时返回令牌。然后,每组服务调用都会将令牌传回。我不想在每次方法调用时传递令牌 让我感到困惑的是会话头是如何成为绑定的一部分的 我也在寻找为什么这是或不是一个好主意。我认为这是干净和简单的 谢谢WCF模拟Salesforce.com登录服务,wcf,binding,token,salesforce,Wcf,Binding,Token,Salesforce,如何实现Salesforce.com使用WCF登录的功能?我希望有一个身份验证服务,在正确登录时返回令牌。然后,每组服务调用都会将令牌传回。我不想在每次方法调用时传递令牌 让我感到困惑的是会话头是如何成为绑定的一部分的 我也在寻找为什么这是或不是一个好主意。我认为这是干净和简单的 谢谢 // Create service object binding = new SforceService(); // Invoke the login call and save result
// 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.");
}
我相信您正在寻求利用及其安全令牌服务/STS模式。Chris,我不关心提供令牌,我正在尝试使用它。我不知道如何像SalesForce那样将其附加到绑定上,或者如何在服务中将其取出。如果您使用WIF,您将拥有所有这些功能,如果您希望自己实现这些功能,您只需在会话cookie中传递令牌,然后在每个请求中验证cookie。谢谢Chris,我希望在没有饼干的情况下也能做到这一点。如果使用该服务的客户端不是.Net,会发生什么情况?即使客户端不是.Net,它们也应该能够处理跨线传递cookie,否则这听起来像是客户端的一个缺点。听起来像是您正在寻找添加自定义SOAP头。。。我在.NET中使用System.Web.Services.WebService完成了这项工作,如果在WCF中找不到这样的方法,我会感到震惊。这个问题看起来很相似,得到了公认的回答: