protected override void ProcessRecord() { try { if (string.IsNullOrEmpty(TenantUrl) && PnPConnection.CurrentConnection != null) { WriteObject(TenantExtensions.GetTenantIdByUrl(PnPConnection.CurrentConnection.Url)); } else if (!string.IsNullOrEmpty(TenantUrl)) { WriteObject(TenantExtensions.GetTenantIdByUrl(TenantUrl)); } else { throw new InvalidOperationException("Either a connection needs to be made by Connect-PnPOnline or TenantUrl needs to be specified"); } } catch (Exception ex) { if (ex.InnerException != null) { if (ex.InnerException is HttpRequestException) { var message = ex.InnerException.Message; using (var jdoc = JsonDocument.Parse(message)) { var errorDescription = jdoc.RootElement.GetProperty("error_description").GetString(); WriteObject(errorDescription); } } } throw; } }
public static string AcquireTokenAsync(string resource, string scope = null) { var tenantId = TenantExtensions.GetTenantIdByUrl(TestCommon.AppSetting("SPOTenantUrl")); //var tenantId = GetTenantIdByUrl(TestCommon.AppSetting("SPOTenantUrl")); if (tenantId == null) { return(null); } var clientId = TestCommon.AppSetting("AppId"); var username = UserName; var password = EncryptionUtility.ToInsecureString(Password); string body; string response; if (scope == null) // use v1 endpoint { body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&resource={resource}"; response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/token", body, "application/x-www-form-urlencoded"); } else // use v2 endpoint { body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&scope={scope}"; response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token", body, "application/x-www-form-urlencoded"); } var json = JToken.Parse(response); return(json["access_token"].ToString()); }
internal static string AcquireToken(string resource, string scope = null) { var tenantId = TenantExtensions.GetTenantIdByUrl(SPOnlineConnection.CurrentConnection.Url); if (tenantId == null) { return(null); } var clientId = "31359c7f-bd7e-475c-86db-fdb8c937548e"; var username = SPOnlineConnection.CurrentConnection.PSCredential.UserName; var password = EncryptionUtility.ToInsecureString(SPOnlineConnection.CurrentConnection.PSCredential.Password); var body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&resource={resource}"; var response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/token", body, "application/x-www-form-urlencoded"); try { var json = JToken.Parse(response); return(json["access_token"].ToString()); } catch { return(null); } }
public static string AcquireTokenAsync(string resource, string scope = null) { var tenantId = TenantExtensions.GetTenantIdByUrl(TestCommon.AppSetting("SPOTenantUrl")); //var tenantId = GetTenantIdByUrl(TestCommon.AppSetting("SPOTenantUrl")); if (tenantId == null) { return(null); } var clientId = TestCommon.AppSetting("AzureADClientId"); if (string.IsNullOrEmpty(clientId) || Password == null || string.IsNullOrEmpty(UserName)) { return(null); } var username = UserName; var password = EncryptionUtility.ToInsecureString(Password); string body; string response; if (scope == null) // use v1 endpoint { body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&resource={resource}"; // TODO: If your app is a public client, then the client_secret or client_assertion cannot be included. If the app is a confidential client, then it must be included. // https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc //body = $"grant_type=password&client_id={clientId}&client_secret={clientSecret}&username={username}&password={password}&resource={resource}"; response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/token", body, "application/x-www-form-urlencoded"); } else // use v2 endpoint { body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&scope={scope}"; // TODO: If your app is a public client, then the client_secret or client_assertion cannot be included. If the app is a confidential client, then it must be included. // https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc //body = $"grant_type=password&client_id={clientId}&client_secret={clientSecret}&username={username}&password={password}&scope={scope}"; response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token", body, "application/x-www-form-urlencoded"); } var json = JToken.Parse(response); return(json["access_token"].ToString()); }
internal static string AcquireToken(string resource, string scope = null) { if (PnPConnection.CurrentConnection == null) { return(null); } var tenantId = TenantExtensions.GetTenantIdByUrl(PnPConnection.CurrentConnection.Url); if (tenantId == null) { return(null); } string body = ""; if (PnPConnection.CurrentConnection.PSCredential != null) { var clientId = "31359c7f-bd7e-475c-86db-fdb8c937548e"; var username = PnPConnection.CurrentConnection.PSCredential.UserName; var password = EncryptionUtility.ToInsecureString(PnPConnection.CurrentConnection.PSCredential.Password); body = $"grant_type=password&client_id={clientId}&username={username}&password={password}&resource={resource}"; } else if (!string.IsNullOrEmpty(PnPConnection.CurrentConnection.ClientId) && !string.IsNullOrEmpty(PnPConnection.CurrentConnection.ClientSecret)) { var clientId = PnPConnection.CurrentConnection.ClientId; var clientSecret = HttpUtility.UrlEncode(PnPConnection.CurrentConnection.ClientSecret); body = $"grant_type=client_credentials&client_id={clientId}&client_secret={clientSecret}&resource={resource}"; } else { throw new System.UnauthorizedAccessException("Specify PowerShell Credentials or AppId and AppSecret"); } var response = HttpHelper.MakePostRequestForString($"https://login.microsoftonline.com/{tenantId}/oauth2/token", body, "application/x-www-form-urlencoded"); try { var json = JToken.Parse(response); return(json["access_token"].ToString()); } catch { return(null); } }
internal static string AcquireToken(string resource, string scope = null) { GenericToken token = null; if (PnPConnection.CurrentConnection == null) { return(null); } var tenantId = TenantExtensions.GetTenantIdByUrl(PnPConnection.CurrentConnection.Url); if (PnPConnection.CurrentConnection.PSCredential != null) { if (scope == null) { // SharePoint or Graph V1 resource var scopes = new[] { $"https://{resource}//.default" }; token = GenericToken.AcquireDelegatedTokenWithCredentials(PnPConnection.PnPManagementShellClientId, scopes, "https://login.microsoftonline.com/organizations/", PnPConnection.CurrentConnection.PSCredential.UserName, PnPConnection.CurrentConnection.PSCredential.Password); } else { token = GenericToken.AcquireDelegatedTokenWithCredentials(PnPConnection.PnPManagementShellClientId, new[] { scope }, "https://login.microsoftonline.com/organizations/", PnPConnection.CurrentConnection.PSCredential.UserName, PnPConnection.CurrentConnection.PSCredential.Password); } } else if (!string.IsNullOrEmpty(PnPConnection.CurrentConnection.ClientId) && !string.IsNullOrEmpty(PnPConnection.CurrentConnection.ClientSecret)) { var clientId = PnPConnection.CurrentConnection.ClientId; var clientSecret = HttpUtility.UrlEncode(PnPConnection.CurrentConnection.ClientSecret); if (scope == null && !resource.Equals("graph.microsoft.com", System.StringComparison.OrdinalIgnoreCase)) { // SharePoint token var scopes = new[] { $"https://{resource}//.default" }; token = GenericToken.AcquireApplicationToken(tenantId, clientId, "https://login.microsoftonline/organizations/", scopes, clientSecret); } else { token = GenericToken.AcquireApplicationToken(tenantId, clientId, "https://login.microsoftonline.com/organizations/", new[] { scope }, clientSecret); } } if (token != null) { return(token.AccessToken); } return(null); }
protected override void ProcessRecord() { try { if (string.IsNullOrEmpty(TenantUrl) && SPOnlineConnection.CurrentConnection != null) { WriteObject(TenantExtensions.GetTenantIdByUrl(SPOnlineConnection.CurrentConnection.Url)); } else if (!string.IsNullOrEmpty(TenantUrl)) { WriteObject(TenantExtensions.GetTenantIdByUrl(TenantUrl)); } else { throw new InvalidOperationException("Either a connection needs to be made by Connect-PnPOnline or TenantUrl needs to be specified"); } } catch (Exception ex) { #if !NETSTANDARD2_1 if (ex.InnerException != null) { if (ex.InnerException is HttpException) { var message = ex.InnerException.Message; var obj = JObject.Parse(message); WriteObject(obj["error_description"].ToString()); } else { throw ex; } } else { throw ex; } #else throw ex; #endif } }