使用ADFS中的Cookie对Sharepoint进行身份验证

时间:2018-03-27 15:09:19

标签: c# authentication sharepoint adfs csom

我需要使用CSOM访问Sharepoint资源。

我还需要使用从ADFS服务器获取的cookie来验证此类请求。

我是否可以使用一些第三方库来获取FedAuth和Rtfa cookie,这样我就不会被迫自己做脏工作了?

2 个答案:

答案 0 :(得分:0)

要使用CSOM访问Sharepoint资源,我们不需要获取Cookie,我们可以通过以下代码进行身份验证:

    /// <summary>
    /// set authentication of SharePoint online
    /// </summary>
    /// <param name="clientContext"></param>
    /// <param name="userName"></param>
    /// <param name="password"></param>
    public static void setOnlineCredential(ClientContext clientContext,string userName,string password)
    {
        //set the user name and password
        SecureString secureString = new SecureString();
        foreach (char c in password.ToCharArray())
        {
            secureString.AppendChar(c);
        }
        clientContext.Credentials = new SharePointOnlineCredentials(userName, secureString);           
    }

    /// <summary>
    /// set authentication of SharePoint on-premise
    /// </summary>
    /// <param name="clientContext"></param>
    /// <param name="userName"></param>
    /// <param name="password"></param>
    /// <param name="domain"></param>
    public static void setClientCredential(ClientContext clientContext, string userName, string password, string domain)
    {
        clientContext.Credentials = new NetworkCredential(userName, password, domain);
    }

此外,对于SharePoint Online,我们可以使用HttpClient进行身份验证以获取Cookie和C#代码中的访问令牌。我们可以参考下面的文章:

SHAREPOINT ONLINE REMOTE AUTHENTICATION (AND DOC UPLOAD)

答案 1 :(得分:0)

您可以使用WebBrowser进行身份验证,然后可以使用cookie来打开您的上下文,例如https://code.msdn.microsoft.com/remote-authentication-in-b7b6f43c

Microsoft建议我使用这种方法。现在,我在NET Core上实现此问题。根据目前的情况,它不支持Windows窗体库。你有更好的主意吗?