internal static PnPConnection InstantiateSPOnlineConnection(Uri url, PSCredential credentials, string tenantAdminUrl, bool disableTelemetry, AzureEnvironment azureEnvironment = AzureEnvironment.Production) { var context = new PnPClientContext(url.AbsoluteUri) { ApplicationName = Resources.ApplicationName, DisableReturnValueCache = true }; var tenantId = string.Empty; try { using (var authManager = new PnP.Framework.AuthenticationManager(credentials.UserName, credentials.Password)) { context = PnPClientContext.ConvertFrom(authManager.GetContext(url.ToString())); context.ExecuteQueryRetry(); var accessToken = authManager.GetAccessTokenAsync(url.ToString()).GetAwaiter().GetResult(); var parsedToken = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(accessToken); tenantId = parsedToken.Claims.FirstOrDefault(c => c.Type == "tid").Value; } } catch (ClientRequestException) { context.Credentials = new NetworkCredential(credentials.UserName, credentials.Password); } catch (ServerException) { context.Credentials = new NetworkCredential(credentials.UserName, credentials.Password); } var connectionType = ConnectionType.O365; if (url.Host.ToLowerInvariant().EndsWith($"sharepoint.{PnP.Framework.AuthenticationManager.GetSharePointDomainSuffix(azureEnvironment)}")) { connectionType = ConnectionType.O365; } if (IsTenantAdminSite(context)) { connectionType = ConnectionType.TenantAdmin; } var spoConnection = new PnPConnection(context, connectionType, credentials, url.ToString(), tenantAdminUrl, PnPPSVersionTag, disableTelemetry, InitializationType.Credentials) { ConnectionMethod = Model.ConnectionMethod.Credentials, AzureEnvironment = azureEnvironment, Tenant = tenantId }; return(spoConnection); }
internal static PnPConnection CreateWithCredentials(Cmdlet cmdlet, Uri url, PSCredential credentials, bool currentCredentials, string tenantAdminUrl, AzureEnvironment azureEnvironment = AzureEnvironment.Production, string clientId = null, string redirectUrl = null, bool onPrem = false, InitializationType initializationType = InitializationType.Credentials) { var context = new PnPClientContext(url.AbsoluteUri) { ApplicationName = Resources.ApplicationName, DisableReturnValueCache = true }; PnPConnection spoConnection = null; if (!onPrem) { var tenantId = string.Empty; try { if (!string.IsNullOrWhiteSpace(clientId)) { PnP.Framework.AuthenticationManager authManager = null; if (PnPConnection.CachedAuthenticationManager != null) { authManager = PnPConnection.CachedAuthenticationManager; PnPConnection.CachedAuthenticationManager = null; } else { authManager = PnP.Framework.AuthenticationManager.CreateWithCredentials(clientId, credentials.UserName, credentials.Password, redirectUrl, azureEnvironment); } using (authManager) { context = PnPClientContext.ConvertFrom(authManager.GetContext(url.ToString())); context.ExecuteQueryRetry(); cmdlet.WriteVerbose("Acquiring token"); var accesstoken = authManager.GetAccessTokenAsync(url.ToString()).GetAwaiter().GetResult(); cmdlet.WriteVerbose("Token acquired"); var parsedToken = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(accesstoken); tenantId = parsedToken.Claims.FirstOrDefault(c => c.Type == "tid").Value; } } else { PnP.Framework.AuthenticationManager authManager = null; if (PnPConnection.CachedAuthenticationManager != null) { authManager = PnPConnection.CachedAuthenticationManager; } else { authManager = PnP.Framework.AuthenticationManager.CreateWithCredentials(credentials.UserName, credentials.Password, azureEnvironment); } using (authManager) { context = PnPClientContext.ConvertFrom(authManager.GetContext(url.ToString())); context.ExecuteQueryRetry(); var accessToken = authManager.GetAccessTokenAsync(url.ToString()).GetAwaiter().GetResult(); var parsedToken = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(accessToken); tenantId = parsedToken.Claims.FirstOrDefault(c => c.Type == "tid").Value; } } } catch (ClientRequestException) { context.Credentials = new NetworkCredential(credentials.UserName, credentials.Password); } catch (ServerException) { context.Credentials = new NetworkCredential(credentials.UserName, credentials.Password); } var connectionType = ConnectionType.O365; if (url.Host.ToLowerInvariant().EndsWith($"sharepoint.{PnP.Framework.AuthenticationManager.GetSharePointDomainSuffix(azureEnvironment)}")) { connectionType = ConnectionType.O365; } if (IsTenantAdminSite(context)) { connectionType = ConnectionType.TenantAdmin; } spoConnection = new PnPConnection(context, connectionType, credentials, url.ToString(), tenantAdminUrl, PnPPSVersionTag, initializationType) { ConnectionMethod = Model.ConnectionMethod.Credentials, AzureEnvironment = azureEnvironment, Tenant = tenantId }; } else { PnP.Framework.AuthenticationManager authManager = null; if (PnPConnection.CachedAuthenticationManager != null) { authManager = PnPConnection.CachedAuthenticationManager; } else { authManager = new PnP.Framework.AuthenticationManager(); } using (authManager) { if (currentCredentials) { context = PnPClientContext.ConvertFrom(authManager.GetOnPremisesContext(url.ToString())); } else { context = PnPClientContext.ConvertFrom(authManager.GetOnPremisesContext(url.ToString(), credentials.UserName, credentials.Password)); } } spoConnection = new PnPConnection(context, ConnectionType.O365, credentials, url.ToString(), tenantAdminUrl, PnPPSVersionTag, initializationType) { ConnectionMethod = Model.ConnectionMethod.Credentials, AzureEnvironment = azureEnvironment, }; } return(spoConnection); }