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
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en vous assurant j'ai été en utilisant SharePoint en Ligne de Composants Clients dans mon code. Voici les étapes que j'ai pris:
Désinstallé le SharePoint Online Management Shell (http://www.microsoft.com/en-us/download/details.aspx?id=35588). Le programme d'origine, qui a été écrit à l'automne dernier et qui a commencé comme une extension de PowerShell programme, utilisé le Microsoft.Online.SharePoint.Client.Tenant.dll qui est venu avec SharePoint Online Management Shell. Le programme devrait faire référence à C:\Program Files\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll.
Installé la dernière version de SharePoint Online Composants Client SDK (http://www.microsoft.com/en-us/download/details.aspx?id=42038). Il est important de noter que ce kit est différent de celui de SharePoint 2013 Composants Client SDK. SharePoint en Ligne de Composants Client SDK de la version 16; SharePoint 2013 Composants Client SDK de la version 15.
Veillé à ce que le Microsoft.SharePoint.Client et Microsoft.SharePoint.Client.Dll Runtime dans le programme chargé à partir du 16 version dans le dossier Extensions Serveur Web, par exemple C:\Program Files\Fichiers Communs\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll.
Je suis maintenant en mesure de s'authentifier à l'aide de deux fédérés et non fédéré les comptes.
sont version 16 rétrocompatible avec la version 15? Si non, comment puis-je déployer les deux versions et à l'utilisation de code? Ai-je besoin de charger dynamiquement l'assemblée en fonction de ce que l'instance de sharepoint à l'utilisateur est de ciblage à partir de mon application client?
Cela ne semble pas fonctionner. J'ai les références suivantes: Microsoft.SharePoint.Client - version: 16.1.0.0 version du fichier: 16.1.4727.1200 Microsoft.SharePoint.Client.Runtime version: 16.1.0.0 version du fichier: 16.1.4727.1200 Toujours obtenir le message d'erreur suivant lorsque je me connecter à un fédéré instance de SharePoint Online, mais il fonctionne dans un "vanille" site SharePoint online "de la Bibliothèque d'Exécution (IDCRL) a rencontré une erreur lors de parler au partenaire STS"
OriginalL'auteur Brite Shiny
Maximilien, vous pouvez utiliser quelque chose comme ce qui suit pour ajouter:
Vous pouvez également vérifier le domaine des assemblages pour les dll.
OriginalL'auteur Michael Veazie
Vous devez vous assurer que vous charger SharePoint Online assemblées dans le beginineg de votre script
OriginalL'auteur Ahmed Salem