Incapable de s'authentifier sur SharePoint en Ligne par programmation avec les services fédérés

Je ne suis pas en mesure de s'authentifier sur SharePoint Online à l'aide de SharePointOnlineCredentials, recevez le message d'erreur:

De l'identité du Client de la Bibliothèque d'Exécution (IDCRL) a rencontré une erreur lors de parler au partenaire STS.

Ce même code a travaillé jusqu'à ce que nous avons mis en œuvre les services AD FS pour fédérer l'authentification à notre Active Directory. Et, en fait, le code fonctionne toujours lorsque j'accède à mon site SharePoint Online, qui n'utilise pas les services fédérés. Cela m'amène à penser il y a un problème à l'aide de SharePointOnlineCredential avec les services fédérés.

Quelqu'un peut confirmer que c'est le cas? Et, dans l'affirmative, quelle est la solution?

J'ai créé un programme simple de vérifier cette question, ce qui suit:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.Online.SharePoint.Client;
using System.Security;

namespace SPOConsole
{
    class Program
    {
        static void Main(string[] args)
        {

            var targetSite = new Uri("<https://<mydomain>.sharepoint.com>");
            var login = "<myuserid>@<mydomain>.com";
            var password = "<mypassword>";
            var securePassword = new SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }

            var onlineCredentials = new SharePointOnlineCredentials(login, securePassword);

            using (ClientContext clientContext = new ClientContext(targetSite))
            {
                clientContext.Credentials = onlineCredentials;
                Web web = clientContext.Web;
                clientContext.Load(web,
                webSite => webSite.Title);

                clientContext.ExecuteQuery();
                Console.WriteLine(web.Title);

                Console.Read();

            }

        }
    }
}

Le code ne fonctionne pas sur la ligne:

        var onlineCredentials = new SharePointOnlineCredentials(login, securePassword);

Suivant la trace de pile:

Microsoft.SharePoint.Client.IdcrlException was unhandled
HResult=-2147186451
Message=Identity Client Runtime Library (IDCRL) encountered an error while talking to the partner STS.
Source=Microsoft.SharePoint.Client.Runtime
ErrorCode=-2147186451
StackTrace:
at Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.CheckHResult(Int32 hr)
at Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.LogonIdentity(String username, SecureString password)
at Microsoft.SharePoint.Client.Idcrl.SharePointOnlineAuthenticationProvider.Logon(String username, SecureString password)
at Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(String username, SecureString password)
at SPOConsole.Program.Main(String[] args) in c:\Users\michael.norton\Documents\Visual Studio 2012\Projects\SimpleSPOConnection\SPOConsole\Program.cs:line 26
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: 

OriginalL'auteur Brite Shiny | 2014-05-05