From 6457f7f1a633b6a4512e885cbd16c3f884553eac Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Thu, 15 Jul 2021 09:24:00 -0700 Subject: [PATCH 01/12] Not yet tested code --- .../Services/GraphAppAuthProvider.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs index 67f55c01a..104a71df9 100644 --- a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs +++ b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs @@ -1,9 +1,5 @@ using GraphExplorerAppModeService.Interfaces; -using Microsoft.Extensions.Configuration; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using Microsoft.Identity.Client; using System.Threading.Tasks; @@ -11,9 +7,21 @@ namespace GraphExplorerAppModeService.Services { public class GraphAppAuthProvider : IGraphAppAuthProvider { - public GraphAppAuthProvider(IConfiguration configuration) + private readonly IConfidentialClientApplication _app; + private readonly string[] _scopes; + public GraphAppAuthProvider(string clientId, string clientSecret, string[] scopes, string uri) { - + _scopes = scopes; + _app = ConfidentialClientApplicationBuilder.Create(clientId) + .WithClientSecret(clientSecret) + .WithAuthority(uri) + .Build(); + } + public async Task retrieveToken() + { + var authenticationResult = await _app.AcquireTokenForClient(_scopes).ExecuteAsync(); + return authenticationResult.AccessToken; } } } + From 5b649240776314eac4899305e4d971bafdbc1a9e Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Thu, 15 Jul 2021 09:25:16 -0700 Subject: [PATCH 02/12] Add all the files --- GraphExplorerAppModeService/GraphExplorerAppModeService.csproj | 3 +++ GraphWebApi/GraphWebApi.csproj | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj b/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj index 522ad66e5..d2cfdee91 100644 --- a/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj +++ b/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj @@ -7,6 +7,9 @@ + + + diff --git a/GraphWebApi/GraphWebApi.csproj b/GraphWebApi/GraphWebApi.csproj index d2424b25c..eb5c42bca 100644 --- a/GraphWebApi/GraphWebApi.csproj +++ b/GraphWebApi/GraphWebApi.csproj @@ -45,7 +45,7 @@ - + From c913a61d7ec66a705dd50b7cff9d0422979118d3 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Thu, 15 Jul 2021 19:49:03 -0700 Subject: [PATCH 03/12] Successfully deletes a channel with this token --- .../Services/GraphAppAuthProvider.cs | 1 + .../GraphExplorerAppModeController.cs | 17 +++++++++++++++-- GraphWebApi/GraphWebApi.csproj | 4 ++++ GraphWebApi/Startup.cs | 17 +++++++++++++++++ MSGraphWebApi.sln | 7 ++++++- 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs index 104a71df9..a49f2a2c3 100644 --- a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs +++ b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs @@ -9,6 +9,7 @@ public class GraphAppAuthProvider : IGraphAppAuthProvider { private readonly IConfidentialClientApplication _app; private readonly string[] _scopes; + public GraphAppAuthProvider(string clientId, string clientSecret, string[] scopes, string uri) { _scopes = scopes; diff --git a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs index af90065a6..36bae787e 100644 --- a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs +++ b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs @@ -6,18 +6,31 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Microsoft.Identity.Web; +using System.Net.Http; +using System.Net.Http.Headers; namespace GraphWebApi.Controllers { [ApiController] public class GraphExplorerAppModeController : ControllerBase { + private readonly ITokenAcquisition tokenAcquisition; + public GraphExplorerAppModeController(ITokenAcquisition tokenAcquisition) + { + this.tokenAcquisition = tokenAcquisition; + } [Route("api/[controller]/{*all}")] [Route("graphproxy/{*all}")] [HttpGet] - public async Task GetAsync(string all) + [AuthorizeForScopes(Scopes = new[] { "https://graph.microsoft.com/.default" })] + public async Task GetAsync(string all) { - return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); + // Acquire the access token. + string scopes = "https://graph.microsoft.com/.default"; + return await tokenAcquisition.GetAccessTokenForAppAsync(scopes); + //return async Task ITokenAcquisition.GetAccessTokenForAppAsync(string scope, string ? tenant = null); + //return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); } [Route("api/[controller]/{*all}")] diff --git a/GraphWebApi/GraphWebApi.csproj b/GraphWebApi/GraphWebApi.csproj index eb5c42bca..30509f89a 100644 --- a/GraphWebApi/GraphWebApi.csproj +++ b/GraphWebApi/GraphWebApi.csproj @@ -21,6 +21,7 @@ + @@ -37,6 +38,7 @@ + @@ -49,6 +51,8 @@ + + diff --git a/GraphWebApi/Startup.cs b/GraphWebApi/Startup.cs index 0ccb62e18..3212699ea 100644 --- a/GraphWebApi/Startup.cs +++ b/GraphWebApi/Startup.cs @@ -27,6 +27,10 @@ using TelemetrySanitizerService; using OpenAPIService.Interfaces; using OpenAPIService; +using System.Threading.Tasks; +using Microsoft.Identity.Web; +using Microsoft.AspNetCore.Authentication.OpenIdConnect; +using System; namespace GraphWebApi { @@ -45,6 +49,11 @@ public Startup(IConfiguration configuration, IWebHostEnvironment hostingEnvironm // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { + services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) + .AddMicrosoftIdentityWebApp(Configuration, "AzureAd") + .EnableTokenAcquisitionToCallDownstreamApi() + .AddInMemoryTokenCaches(); + services.AddDistributedMemoryCache(); services.AddAuthentication(option => { option.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; @@ -57,6 +66,14 @@ public void ConfigureServices(IServiceCollection services) ValidAudience = Configuration["AzureAd:Audience"], ValidIssuer = Configuration["AzureAd:Issuer"] }; + option.Events = new JwtBearerEvents() + { + OnAuthenticationFailed = context => + { + context.NoResult(); + return Task.FromResult(0); + } + }; }); #region AppInsights diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index 600414ab3..3528045d0 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -43,7 +43,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService", "UtilitySe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService.Test", "UtilityService.Test\UtilityService.Test.csproj", "{0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{23802A4B-921F-4C54-A161-ADE4DEC77F91}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From bb7e2c678faae7bd93e6a3f072701f6d322ea3e7 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Thu, 15 Jul 2021 23:18:58 -0700 Subject: [PATCH 04/12] Added parameters for appsettings.json --- GraphWebApi/appsettings.json | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/GraphWebApi/appsettings.json b/GraphWebApi/appsettings.json index e596398ee..dae7c854d 100644 --- a/GraphWebApi/appsettings.json +++ b/GraphWebApi/appsettings.json @@ -1,13 +1,11 @@ { "AzureAd": { "Instance": "https://login.microsoftonline.com/", - "TenantId": "ENTER_TENANT_ID", + "TenantId": "TENANT_ID", + "ClientId": "CLIENT_ID", + "ClientSecret": "CLIENT_SECRET", "Audience": "ENTER_APP_ID_URI", - "Issuer": "ENTER_ISSUER_URI", - "ClientId": "YOUR_APP_ID_HERE", - "ClientSecret": "YOUR_APP_PASSWORD_HERE", - "Scopes": "openid email profile offline_access", - "GraphResourceId": "https://graph.microsoft.com/" + "Issuer": "ENTER_ISSUER_URI" }, "Logging": { "LogLevel": { From e9c2364a0d65dcfb01e39de6bcad68b6b158be8f Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Fri, 16 Jul 2021 01:33:40 -0700 Subject: [PATCH 05/12] Removed unused code --- .../GraphExplorerAppModeService.csproj | 3 --- .../Services/GraphAppAuthProvider.cs | 23 ++++++------------- .../GraphExplorerAppModeController.cs | 12 +++++++--- GraphWebApi/GraphWebApi.csproj | 2 -- GraphWebApi/Startup.cs | 1 - MSGraphWebApi.sln | 11 --------- 6 files changed, 16 insertions(+), 36 deletions(-) diff --git a/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj b/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj index d2cfdee91..522ad66e5 100644 --- a/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj +++ b/GraphExplorerAppModeService/GraphExplorerAppModeService.csproj @@ -7,9 +7,6 @@ - - - diff --git a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs index a49f2a2c3..67f55c01a 100644 --- a/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs +++ b/GraphExplorerAppModeService/Services/GraphAppAuthProvider.cs @@ -1,5 +1,9 @@ using GraphExplorerAppModeService.Interfaces; -using Microsoft.Identity.Client; +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; using System.Threading.Tasks; @@ -7,22 +11,9 @@ namespace GraphExplorerAppModeService.Services { public class GraphAppAuthProvider : IGraphAppAuthProvider { - private readonly IConfidentialClientApplication _app; - private readonly string[] _scopes; - - public GraphAppAuthProvider(string clientId, string clientSecret, string[] scopes, string uri) - { - _scopes = scopes; - _app = ConfidentialClientApplicationBuilder.Create(clientId) - .WithClientSecret(clientSecret) - .WithAuthority(uri) - .Build(); - } - public async Task retrieveToken() + public GraphAppAuthProvider(IConfiguration configuration) { - var authenticationResult = await _app.AcquireTokenForClient(_scopes).ExecuteAsync(); - return authenticationResult.AccessToken; + } } } - diff --git a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs index 36bae787e..1ef5456a2 100644 --- a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs +++ b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs @@ -23,14 +23,20 @@ public GraphExplorerAppModeController(ITokenAcquisition tokenAcquisition) [Route("api/[controller]/{*all}")] [Route("graphproxy/{*all}")] [HttpGet] + public async Task GetAsync(string all) + { + return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); + } + + [Route("api/[controller]/{*all}")] + [Route("graphproxy/token")] + [HttpGet] [AuthorizeForScopes(Scopes = new[] { "https://graph.microsoft.com/.default" })] - public async Task GetAsync(string all) + public async Task GetTokenAsync(string all) { // Acquire the access token. string scopes = "https://graph.microsoft.com/.default"; return await tokenAcquisition.GetAccessTokenForAppAsync(scopes); - //return async Task ITokenAcquisition.GetAccessTokenForAppAsync(string scope, string ? tenant = null); - //return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); } [Route("api/[controller]/{*all}")] diff --git a/GraphWebApi/GraphWebApi.csproj b/GraphWebApi/GraphWebApi.csproj index 30509f89a..99e0191a5 100644 --- a/GraphWebApi/GraphWebApi.csproj +++ b/GraphWebApi/GraphWebApi.csproj @@ -21,7 +21,6 @@ - @@ -38,7 +37,6 @@ - diff --git a/GraphWebApi/Startup.cs b/GraphWebApi/Startup.cs index 3212699ea..e121b50d8 100644 --- a/GraphWebApi/Startup.cs +++ b/GraphWebApi/Startup.cs @@ -30,7 +30,6 @@ using System.Threading.Tasks; using Microsoft.Identity.Web; using Microsoft.AspNetCore.Authentication.OpenIdConnect; -using System; namespace GraphWebApi { diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index 3528045d0..95c992d8c 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -43,13 +43,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService", "UtilitySe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService.Test", "UtilityService.Test\UtilityService.Test.csproj", "{0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{23802A4B-921F-4C54-A161-ADE4DEC77F91}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - EndProjectSection -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -136,10 +129,6 @@ Global {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Release|Any CPU.Build.0 = Release|Any CPU - {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 5bdc1864957d961623df2ae674c61cf7a82c79bf Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Tue, 20 Jul 2021 12:31:21 -0700 Subject: [PATCH 06/12] Token retrieval requires a tenantId input and also is a private funciton --- GraphWebApi/Controllers/GraphExplorerAppModeController.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs index 1ef5456a2..8427b2e2e 100644 --- a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs +++ b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs @@ -28,15 +28,11 @@ public async Task GetAsync(string all) return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); } - [Route("api/[controller]/{*all}")] - [Route("graphproxy/token")] - [HttpGet] - [AuthorizeForScopes(Scopes = new[] { "https://graph.microsoft.com/.default" })] - public async Task GetTokenAsync(string all) + private async Task GetTokenAsync(string tenantId) { // Acquire the access token. string scopes = "https://graph.microsoft.com/.default"; - return await tokenAcquisition.GetAccessTokenForAppAsync(scopes); + return await tokenAcquisition.GetAccessTokenForAppAsync(scopes, tenantId, null); } [Route("api/[controller]/{*all}")] From c805d760c1144ef168fdacb1088cda86d6d4bc98 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 10:18:54 -0700 Subject: [PATCH 07/12] Changed back to endpoint --- GraphWebApi/Controllers/GraphExplorerAppModeController.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs index 8427b2e2e..1ef5456a2 100644 --- a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs +++ b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs @@ -28,11 +28,15 @@ public async Task GetAsync(string all) return await ProcessRequestAsync("GET", all, null).ConfigureAwait(false); } - private async Task GetTokenAsync(string tenantId) + [Route("api/[controller]/{*all}")] + [Route("graphproxy/token")] + [HttpGet] + [AuthorizeForScopes(Scopes = new[] { "https://graph.microsoft.com/.default" })] + public async Task GetTokenAsync(string all) { // Acquire the access token. string scopes = "https://graph.microsoft.com/.default"; - return await tokenAcquisition.GetAccessTokenForAppAsync(scopes, tenantId, null); + return await tokenAcquisition.GetAccessTokenForAppAsync(scopes); } [Route("api/[controller]/{*all}")] From e84011fc8942509c8b38cf1b394329a8f726a4dd Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 11:56:18 -0700 Subject: [PATCH 08/12] extracted the tenantid --- GraphWebApi/Controllers/GraphExplorerAppModeController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs index f59a64b57..01ea80cae 100644 --- a/GraphWebApi/Controllers/GraphExplorerAppModeController.cs +++ b/GraphWebApi/Controllers/GraphExplorerAppModeController.cs @@ -29,14 +29,14 @@ public async Task GetAsync(string all, [FromHeader] string Author } [Route("api/[controller]/{*all}")] - [Route("graphproxy/token")] + [Route("graphproxy/token/{tenantId}")] [HttpGet] [AuthorizeForScopes(Scopes = new[] { "https://graph.microsoft.com/.default" })] - public async Task GetTokenAsync(string all) + public async Task GetTokenAsync(string tenantId) { // Acquire the access token. string scopes = "https://graph.microsoft.com/.default"; - return await tokenAcquisition.GetAccessTokenForAppAsync(scopes); + return await tokenAcquisition.GetAccessTokenForAppAsync(scopes, tenantId, null); } [Route("api/[controller]/{*all}")] From 01cfc64b7f64c9497f69c8377157cd457b3eaa53 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 15:52:58 -0700 Subject: [PATCH 09/12] Undo deletion in MSGraphWebApi.sln --- MSGraphWebApi.sln | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index 95c992d8c..a9da67910 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -43,6 +43,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService", "UtilitySe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService.Test", "UtilityService.Test\UtilityService.Test.csproj", "{0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -129,6 +131,10 @@ Global {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}.Release|Any CPU.Build.0 = Release|Any CPU + {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF515BB3-08B5-41A1-80E6-4529670A6B1C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -136,4 +142,4 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EDF3EEDF-673E-4CD3-8EE0-9DEFDF3104BB} EndGlobalSection -EndGlobal +EndGlobal \ No newline at end of file From d8e65990f72cbe471cb9ffa8e49f00cb6b9bb189 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 15:53:52 -0700 Subject: [PATCH 10/12] Removed the extra line --- MSGraphWebApi.sln | 1 + 1 file changed, 1 insertion(+) diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index a9da67910..09db8b115 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -142,4 +142,5 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EDF3EEDF-673E-4CD3-8EE0-9DEFDF3104BB} EndGlobalSection + EndGlobal \ No newline at end of file From 2e37f49ca1a0af409b15d163c33e2611a3680d69 Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 15:55:46 -0700 Subject: [PATCH 11/12] Removed spaces --- MSGraphWebApi.sln | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index 09db8b115..3cfcdc0be 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -43,7 +43,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService", "UtilitySe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService.Test", "UtilityService.Test\UtilityService.Test.csproj", "{0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -142,5 +142,4 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EDF3EEDF-673E-4CD3-8EE0-9DEFDF3104BB} EndGlobalSection - -EndGlobal \ No newline at end of file +EndGlobal From eb2a95bab63e8debb78b13793c1b9febcb4383bf Mon Sep 17 00:00:00 2001 From: Grace Tsao Date: Wed, 21 Jul 2021 15:57:16 -0700 Subject: [PATCH 12/12] Reformatted the project number --- MSGraphWebApi.sln | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MSGraphWebApi.sln b/MSGraphWebApi.sln index 3cfcdc0be..600414ab3 100644 --- a/MSGraphWebApi.sln +++ b/MSGraphWebApi.sln @@ -43,7 +43,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService", "UtilitySe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityService.Test", "UtilityService.Test\UtilityService.Test.csproj", "{0F4A15DC-F4CD-415D-A62D-6B0D95ED25E8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphExplorerAppModeService", "GraphExplorerAppModeService\GraphExplorerAppModeService.csproj", "{AF515BB3-08B5-41A1-80E6-4529670A6B1C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution