对于我们的一个支持FBA的SharePoint站点,我们需要访问各种Web服务。我知道在进行任何其他SP Web服务调用之前,我们需要调用Authentication.asmx。
如何获取当前登录用户的用户名&密码传递给Authentication.asmx服务?
感谢。
更新:我使用已知的用户名和密码尝试了Marek的解决方案,并为Authentication.asmx获得了401。所以可能有些设置已关闭。管理员正在调查它。
答案 0 :(得分:1)
MembershipUser user = Membership.GetUser();
string username = user.UserName;
string password = user.GetPassword();
Authentication auth = new Authentication();
auth.CookieContainer = new CookieContainer();
LoginResult result = auth.Login(username, password);
if (result.ErrorCode == LoginErrorCode.NoError)
{
CookieCollection cookies = auth.CookieContainer.GetCookies(new Uri(auth.Url));
Cookie authCookie = cookies[result.CookieName];
Lists lists = new Lists();
lists.CookieContainer = new CookieContainer();
lists.CookieContainer.Add(authCookie);
lists.GetListCollection();
}
但是,根据成员资格提供者的设置(密码是以明文形式存储,加密还是散列?是否需要通过安全答案来获取密码?)检索密码可能更困难甚至不可能,你需要询问用户。