从哪里获取用于Authentication.asmx的凭据?

时间:2011-11-21 04:57:22

标签: web-services sharepoint-2007 moss fba

对于我们的一个支持FBA的SharePoint站点,我们需要访问各种Web服务。我知道在进行任何其他SP Web服务调用之前,我们需要调用Authentication.asmx。

如何获取当前登录用户的用户名&密码传递给Authentication.asmx服务?

感谢。

更新:我使用已知的用户名和密码尝试了Marek的解决方案,并为Authentication.asmx获得了401。所以可能有些设置已关闭。管理员正在调查它。

1 个答案:

答案 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();
}

但是,根据成员资格提供者的设置(密码是以明文形式存储,加密还是散列?是否需要通过安全答案来获取密码?)检索密码可能更困难甚至不可能,你需要询问用户。