Microsoft.SharePoint.Client.IdcrlException: «Имя для входа или пароль ---» Даже с Pnp Authentication Manager - PullRequest
0 голосов
/ 30 марта 2020

Я подписался на Office 365 Developer Edition с Microsoft 365 E5 Developer (без Windows и аудиоконференций) . Я пишу коды для подключения к Sharepoint домена разработчика. Ниже приведены мои коды:

   public static String GetList( ICredentials credentials)
    {
        var authManager = new OfficeDevPnP.Core.AuthenticationManager();
        using (ClientContext clientContext = 
        authManager.GetWebLoginClientContext("https://xxx.sharepoint.com"))
        {
            clientContext.Credentials = credentials;

            Web web = clientContext.Web;
            clientContext.Load(web,
            webSite => webSite.Title);

            clientContext.ExecuteQuery();
            return web.Title;


        }
    }


    public string callSharepoint()
    {


        const string userName = "Username@domain.onmicrosoft.com";  
        const string password = "xxxx";
        var securePassword = new SecureString();
        foreach (var c in password)
        {
            securePassword.AppendChar(c);
        }
        var credentials = new SharePointOnlineCredentials(userName, securePassword);

        var list = GetList(credentials); 
        return list.ToString();
    }

Во время работы сначала запрашивается ввод учетных данных Microsoft Office, а затем выполняется проверка путем отправки кода на контактный номер, а затем после завершения проверки создается исключение на линии clientContext. .ExecuteQuery (). Исключение составляют следующие:

Microsoft.SharePoint.Client.IdcrlException: «Имя входа или пароль не совпадают с именем в системе учетных записей Microsoft.»

Я использую учетные данные учетной записи администратора с ролью Глобальный администратор . Я также попытался добавить новую учетную запись пользователя в эту Active Directory и попробовал эти учетные данные, но все еще получил то же исключение в том же месте. Я даже пытаюсь удалить Pnp Authorization, включить и отключить многофакторную авторизацию, но безуспешно. Тем не менее, я могу успешно войти на сайт Sharepoint в браузере, используя точно такие же учетные данные.

Я думаю, что в настройке, скорее всего, возникла проблема, которая возникла при настройке подписки для разработчиков офисных учетных записей. И, возможно, в коде нет ничего плохого, потому что я использовал те же коды для входа в Sharepoint моей организации, и он работает отлично. Возможно, мне нужно настроить что-то еще в учетной записи Office моего разработчика.

Пожалуйста, дайте мне знать, если у кого-то уже есть знания об этой проблеме.

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Хорошо, я нашел решение. То есть мне не нужна эта строка кода:

     clientContext.Credentials = credentials;

Поскольку MFA включен, поэтому, когда я вошел в систему через Pnp Authenticator, он должен использовать эту учетную запись пользователя. Вместо того, который передается через SharePointOnlineCredentials.

0 голосов
/ 31 марта 2020

У вас есть инициализация учетных данных, чтобы вы могли использовать их напрямую, если проблема существует, должна быть связана с вашей учетной записью пользователя или лицензией.

public static String GetList(ICredentials credentials)
        {
            //var authManager = new OfficeDevPnP.Core.AuthenticationManager();
            //using (ClientContext clientContext =
            //authManager.GetWebLoginClientContext("https://xxx.sharepoint.com/sites/lee"))
            //{

            //}

            using (ClientContext clientContext = new ClientContext("https://xxx.sharepoint.com/sites/lee"))
            {
                clientContext.Credentials = credentials;

                Web web = clientContext.Web;
                clientContext.Load(web,
                webSite => webSite.Title);

                clientContext.ExecuteQuery();
                return web.Title;
            }
        }


        public string callSharepoint()
        {


            const string userName = "user@xxx.onmicrosoft.com";
            const string password = "password";
            var securePassword = new SecureString();
            foreach (var c in password)
            {
                securePassword.AppendChar(c);
            }
            var credentials = new SharePointOnlineCredentials(userName, securePassword);

            var list = GetList(credentials);
            return list.ToString();
        }
...