Skip to content

Commit 2de14ce

Browse files
author
Tiago Brenck
committed
Updated all samples to use new code
1 parent cabe8d2 commit 2de14ce

File tree

20 files changed

+118
-80
lines changed

20 files changed

+118
-80
lines changed

2-WebApp-graph-user/2-2-TokenCache/Startup.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using WebApp_OpenIDConnect_DotNet.Services.GraphOperations;
1212
using Microsoft.Extensions.Hosting;
1313
using Microsoft.Identity.Web.TokenCacheProviders.Distributed;
14+
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
15+
using Microsoft.Identity.Web.UI;
1416

1517
namespace WebApp_OpenIDConnect_DotNet
1618
{
@@ -49,11 +51,13 @@ dotnet tool install --global dotnet-sql-cache
4951
dotnet sql-cache create "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=MsalTokenCacheDatabase;Integrated Security=True;" dbo TokenCache
5052
*/
5153

54+
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
55+
.AddSignIn("AzureAD", Configuration, options => Configuration.Bind("AzureAD", options));
56+
5257
// Token acquisition service based on MSAL.NET
5358
// and chosen token cache implementation
54-
services.AddSignIn(Configuration)
55-
.AddWebAppCallsProtectedWebApi(Configuration, new string[] { Constants.ScopeUserRead })
56-
.AddDistributedTokenCaches();
59+
services.AddWebAppCallsProtectedWebApi(Configuration, new string[] { Constants.ScopeUserRead })
60+
.AddDistributedTokenCaches();
5761

5862
services.AddDistributedSqlServerCache(options =>
5963
{
@@ -72,7 +76,7 @@ dotnet tool install --global dotnet-sql-cache
7276
.RequireAuthenticatedUser()
7377
.Build();
7478
options.Filters.Add(new AuthorizeFilter(policy));
75-
});
79+
}).AddMicrosoftIdentityUI();
7680
services.AddRazorPages();
7781
}
7882

2-WebApp-graph-user/2-2-TokenCache/Views/Shared/_LoginPartial.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
{
44
<ul class="nav navbar-nav navbar-right">
55
<li class="navbar-text">Hello @User.GetDisplayName()!</li>
6-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
6+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
77
</ul>
88
}
99
else
1010
{
1111
<ul class="nav navbar-nav navbar-right">
12-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
12+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
1313
</ul>
1414
}

2-WebApp-graph-user/2-2-TokenCache/WebApp-OpenIDConnect-DotNet.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
</ItemGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.0.0" />
2221
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.1" />
2322
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="3.0.1" />
2423
</ItemGroup>
2524

2625
<ItemGroup>
26+
<ProjectReference Include="..\..\Microsoft.Identity.Web.UI\Microsoft.Identity.Web.UI.csproj" />
2727
<ProjectReference Include="..\..\Microsoft.Identity.Web\Microsoft.Identity.Web.csproj" />
2828
</ItemGroup>
2929

2-WebApp-graph-user/2-2-TokenCache/WebApp-OpenIDConnect-DotNet.sln

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27130.2027
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29709.97
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApp-OpenIDConnect-DotNet", "WebApp-OpenIDConnect-DotNet.csproj", "{8DCFEEC2-0A85-4C7E-B96A-21C9184470B1}"
77
EndProject
88
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Identity.Web", "..\..\Microsoft.Identity.Web\Microsoft.Identity.Web.csproj", "{E0CEF26A-6CE6-4505-851B-6580D5564752}"
99
EndProject
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Identity.Web.UI", "..\..\Microsoft.Identity.Web.UI\Microsoft.Identity.Web.UI.csproj", "{502BB949-016D-4A24-A3AB-543C6F64A74F}"
11+
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1214
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
2123
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Debug|Any CPU.Build.0 = Debug|Any CPU
2224
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Release|Any CPU.ActiveCfg = Release|Any CPU
2325
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{502BB949-016D-4A24-A3AB-543C6F64A74F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{502BB949-016D-4A24-A3AB-543C6F64A74F}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{502BB949-016D-4A24-A3AB-543C6F64A74F}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{502BB949-016D-4A24-A3AB-543C6F64A74F}.Release|Any CPU.Build.0 = Release|Any CPU
2430
EndGlobalSection
2531
GlobalSection(SolutionProperties) = preSolution
2632
HideSolutionNode = FALSE

2-WebApp-graph-user/2-3-Multi-Tenant/Controllers/HomeController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public IActionResult DeleteTenant(string id)
6565

6666
// If the user deletes its own tenant from the list, they would also be signed-out
6767
if (id == signedUsersTenant)
68-
return RedirectToAction("SignOut", "Account", new { area = "AzureAD" });
68+
return RedirectToAction("SignOut", "Account", new { area = "MicrosoftIdentity" });
6969
else
7070
return RedirectToAction("Index");
7171
}

2-WebApp-graph-user/2-3-Multi-Tenant/Controllers/OnboardingController.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2323
*/
2424

2525
using Microsoft.AspNetCore.Authentication;
26-
using Microsoft.AspNetCore.Authentication.AzureAD.UI;
26+
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
2727
using Microsoft.AspNetCore.Authorization;
2828
using Microsoft.AspNetCore.Http.Extensions;
2929
using Microsoft.AspNetCore.Mvc;
3030
using Microsoft.Extensions.Configuration;
3131
using Microsoft.Extensions.Options;
32+
using Microsoft.Identity.Web;
3233
using System;
3334
using System.Linq;
3435
using System.Threading.Tasks;
@@ -41,13 +42,13 @@ namespace WebApp_OpenIDConnect_DotNet.Controllers
4142
public class OnboardingController : Controller
4243
{
4344
private readonly SampleDbContext dbContext;
44-
private readonly AzureADOptions azureADOptions;
45+
private readonly MicrosoftIdentityOptions microsoftIdentityOptions;
4546
private readonly IConfiguration configuration;
4647

47-
public OnboardingController(SampleDbContext dbContext, IOptions<AzureADOptions> azureADOptions, IConfiguration configuration)
48+
public OnboardingController(SampleDbContext dbContext, IOptions<MicrosoftIdentityOptions> microsoftIdentityOptions, IConfiguration configuration)
4849
{
4950
this.dbContext = dbContext;
50-
this.azureADOptions = azureADOptions.Value;
51+
this.microsoftIdentityOptions = microsoftIdentityOptions.Value;
5152
this.configuration = configuration;
5253
}
5354

@@ -85,8 +86,8 @@ public IActionResult Onboard()
8586
// Refer to https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent for details about the Url format being constructed below
8687
string authorizationRequest = string.Format(
8788
"{0}organizations/v2.0/adminconsent?client_id={1}&redirect_uri={2}&state={3}&scope={4}",
88-
azureADOptions.Instance,
89-
Uri.EscapeDataString(azureADOptions.ClientId), // The application Id as obtained from the Azure Portal
89+
microsoftIdentityOptions.Instance,
90+
Uri.EscapeDataString(microsoftIdentityOptions.ClientId), // The application Id as obtained from the Azure Portal
9091
Uri.EscapeDataString(currentUri + "Onboarding/ProcessCode"), // Uri that the admin will be redirected to after the consent
9192
Uri.EscapeDataString(stateMarker), // The state parameter is used to validate the response, preventing a man-in-the-middle attack, and it will also be used to identify this request in the ProcessCode action.
9293
Uri.EscapeDataString(configuration.GetValue<string>("GraphAPI:StaticScope"))); // The scopes to be presented to the admin to consent. Here we are using the static scope '/.default' (https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#the-default-scope).
@@ -125,7 +126,7 @@ public async Task<IActionResult> ProcessCode(string tenant, string error, string
125126
{
126127
// Create a Sign-in challenge to re-authenticate the user again as we need claims from the user's id_token.
127128
// Since the user will have a session on AAD already, they wont need to select an account again.
128-
return Challenge(authenticationProperties, AzureADDefaults.OpenIdScheme);
129+
return Challenge(authenticationProperties, OpenIdConnectDefaults.AuthenticationScheme);
129130
}
130131

131132
// Find a tenant record matching the TempAuthorizationCode that we previously saved in the Onboard()
@@ -147,7 +148,7 @@ public async Task<IActionResult> ProcessCode(string tenant, string error, string
147148

148149
// Create a Sign-in challenge to re-authenticate the user again as we need claims from the user's id_token.
149150
// Since the user will have a session on AAD already, they wont need to select an account again
150-
return Challenge(authenticationProperties, AzureADDefaults.OpenIdScheme);
151+
return Challenge(authenticationProperties, OpenIdConnectDefaults.AuthenticationScheme);
151152
}
152153
}
153154
}

2-WebApp-graph-user/2-3-Multi-Tenant/Startup.cs

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
SOFTWARE.
2323
*/
2424

25-
using Microsoft.AspNetCore.Authentication.AzureAD.UI;
2625
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
2726
using Microsoft.AspNetCore.Authorization;
2827
using Microsoft.AspNetCore.Builder;
@@ -41,6 +40,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
4140
using WebApp_OpenIDConnect_DotNet.Services;
4241
using WebApp_OpenIDConnect_DotNet.Utils;
4342
using Microsoft.Extensions.Hosting;
43+
using Microsoft.Identity.Web.UI;
4444

4545
namespace WebApp_OpenIDConnect_DotNet
4646
{
@@ -77,45 +77,47 @@ public void ConfigureServices(IServiceCollection services)
7777
services.AddScoped<IMSGraphService, MSGraphService>();
7878

7979
// Sign-in users with the Microsoft identity platform
80-
services.AddSignIn(Configuration)
81-
.AddWebAppCallsProtectedWebApi(Configuration, new string[] { GraphScope.UserReadAll })
82-
.AddInMemoryTokenCaches();
83-
84-
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
85-
{
86-
options.Events.OnTokenValidated = async context =>
80+
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
81+
.AddSignIn("AzureAD", Configuration, options =>
8782
{
88-
string tenantId = context.SecurityToken.Claims.FirstOrDefault(x => x.Type == "tid" || x.Type == "http://schemas.microsoft.com/identity/claims/tenantid")?.Value;
83+
Configuration.Bind("AzureAD", options);
8984

90-
if (string.IsNullOrWhiteSpace(tenantId))
91-
throw new UnauthorizedAccessException("Unable to get tenantId from token.");
85+
options.Events.OnTokenValidated = async context =>
86+
{
87+
string tenantId = context.SecurityToken.Claims.FirstOrDefault(x => x.Type == "tid" || x.Type == "http://schemas.microsoft.com/identity/claims/tenantid")?.Value;
9288

93-
var dbContext = context.HttpContext.RequestServices.GetRequiredService<SampleDbContext>();
89+
if (string.IsNullOrWhiteSpace(tenantId))
90+
throw new UnauthorizedAccessException("Unable to get tenantId from token.");
9491

95-
var authorizedTenant = await dbContext.AuthorizedTenants.FirstOrDefaultAsync(t => t.TenantId == tenantId);
92+
var dbContext = context.HttpContext.RequestServices.GetRequiredService<SampleDbContext>();
9693

97-
if (authorizedTenant == null)
98-
throw new UnauthorizedTenantException("This tenant is not authorized");
99-
};
100-
options.Events.OnAuthenticationFailed = (context) =>
101-
{
102-
if (context.Exception != null && context.Exception is UnauthorizedTenantException)
94+
var authorizedTenant = await dbContext.AuthorizedTenants.FirstOrDefaultAsync(t => t.TenantId == tenantId);
95+
96+
if (authorizedTenant == null)
97+
throw new UnauthorizedTenantException("This tenant is not authorized");
98+
};
99+
options.Events.OnAuthenticationFailed = (context) =>
103100
{
104-
context.Response.Redirect("/Home/UnauthorizedTenant");
105-
context.HandleResponse(); // Suppress the exception
106-
}
101+
if (context.Exception != null && context.Exception is UnauthorizedTenantException)
102+
{
103+
context.Response.Redirect("/Home/UnauthorizedTenant");
104+
context.HandleResponse(); // Suppress the exception
105+
}
107106

108-
return Task.FromResult(0);
109-
};
110-
});
107+
return Task.FromResult(0);
108+
};
109+
});
110+
111+
services.AddWebAppCallsProtectedWebApi(Configuration, new string[] { GraphScope.UserReadAll })
112+
.AddInMemoryTokenCaches();
111113

112114
services.AddControllersWithViews(options =>
113115
{
114116
var policy = new AuthorizationPolicyBuilder()
115117
.RequireAuthenticatedUser()
116118
.Build();
117119
options.Filters.Add(new AuthorizeFilter(policy));
118-
});
120+
}).AddMicrosoftIdentityUI();
119121
services.AddRazorPages();
120122
}
121123

2-WebApp-graph-user/2-3-Multi-Tenant/Views/Shared/_LoginPartial.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
{
55
<ul class="nav navbar-nav navbar-right">
66
<li class="navbar-text">Hello @User.GetDisplayName()!</li>
7-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
7+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
88
</ul>
99
}
1010
else
1111
{
1212
<ul class="nav navbar-nav navbar-right">
1313
<li><a asp-area="" asp-controller="Onboarding" asp-action="Signup">Onboard</a></li>
14-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
14+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
1515
</ul>
1616
}

2-WebApp-graph-user/2-3-Multi-Tenant/WebApp-OpenIDConnect-DotNet.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.0.0" />
2322
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.1" />
2423
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.1" />
2524
<PackageReference Include="Microsoft.Graph" Version="1.20.0" />
2625
</ItemGroup>
2726

2827
<ItemGroup>
28+
<ProjectReference Include="..\..\Microsoft.Identity.Web.UI\Microsoft.Identity.Web.UI.csproj" />
2929
<ProjectReference Include="..\..\Microsoft.Identity.Web\Microsoft.Identity.Web.csproj" />
3030
</ItemGroup>
3131

2-WebApp-graph-user/2-3-Multi-Tenant/WebApp-OpenIDConnect-DotNet.sln

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27130.2027
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29709.97
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApp-OpenIDConnect-DotNet", "WebApp-OpenIDConnect-DotNet.csproj", "{8DCFEEC2-0A85-4C7E-B96A-21C9184470B1}"
77
EndProject
88
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Identity.Web", "..\..\Microsoft.Identity.Web\Microsoft.Identity.Web.csproj", "{E0CEF26A-6CE6-4505-851B-6580D5564752}"
99
EndProject
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Identity.Web.UI", "..\..\Microsoft.Identity.Web.UI\Microsoft.Identity.Web.UI.csproj", "{B3A79215-F67C-43A0-9CFB-F6EA78D4FB40}"
11+
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1214
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
2123
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Debug|Any CPU.Build.0 = Debug|Any CPU
2224
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Release|Any CPU.ActiveCfg = Release|Any CPU
2325
{E0CEF26A-6CE6-4505-851B-6580D5564752}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{B3A79215-F67C-43A0-9CFB-F6EA78D4FB40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{B3A79215-F67C-43A0-9CFB-F6EA78D4FB40}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{B3A79215-F67C-43A0-9CFB-F6EA78D4FB40}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{B3A79215-F67C-43A0-9CFB-F6EA78D4FB40}.Release|Any CPU.Build.0 = Release|Any CPU
2430
EndGlobalSection
2531
GlobalSection(SolutionProperties) = preSolution
2632
HideSolutionNode = FALSE

2-WebApp-graph-user/2-4-Sovereign-Call-MSGraph/Startup.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
using WebApp_OpenIDConnect_DotNet.Infrastructure;
1111
using WebApp_OpenIDConnect_DotNet.Services.GraphOperations;
1212
using Microsoft.Extensions.Hosting;
13+
using Microsoft.Identity.Web.UI;
14+
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
1315

1416
namespace WebApp_OpenIDConnect_DotNet
1517
{
@@ -36,11 +38,13 @@ public void ConfigureServices(IServiceCollection services)
3638

3739
services.AddOptions();
3840

41+
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
42+
.AddSignIn("AzureAD", Configuration, options => Configuration.Bind("AzureAD", options));
43+
3944
// Token acquisition service based on MSAL.NET
4045
// and chosen token cache implementation
41-
services.AddSignIn(Configuration)
42-
.AddWebAppCallsProtectedWebApi(Configuration, new string[] { Constants.ScopeUserRead })
43-
.AddInMemoryTokenCaches();
46+
services.AddWebAppCallsProtectedWebApi(Configuration, new string[] { Constants.ScopeUserRead })
47+
.AddInMemoryTokenCaches();
4448

4549
// Add Graph
4650
services.AddGraphService(Configuration);
@@ -51,7 +55,7 @@ public void ConfigureServices(IServiceCollection services)
5155
.RequireAuthenticatedUser()
5256
.Build();
5357
options.Filters.Add(new AuthorizeFilter(policy));
54-
});
58+
}).AddMicrosoftIdentityUI();
5559
services.AddRazorPages();
5660
}
5761

2-WebApp-graph-user/2-4-Sovereign-Call-MSGraph/Views/Shared/_LoginPartial.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
{
44
<ul class="nav navbar-nav navbar-right">
55
<li class="navbar-text">Hello @User.GetDisplayName()!</li>
6-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
6+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
77
</ul>
88
}
99
else
1010
{
1111
<ul class="nav navbar-nav navbar-right">
12-
<li><a asp-area="AzureAD" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
12+
<li><a asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
1313
</ul>
1414
}

2-WebApp-graph-user/2-4-Sovereign-Call-MSGraph/WebApp-OpenIDConnect-DotNet.csproj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818
</ItemGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.0.0" />
22-
</ItemGroup>
23-
24-
<ItemGroup>
21+
<ProjectReference Include="..\..\Microsoft.Identity.Web.UI\Microsoft.Identity.Web.UI.csproj" />
2522
<ProjectReference Include="..\..\Microsoft.Identity.Web\Microsoft.Identity.Web.csproj" />
2623
</ItemGroup>
2724

0 commit comments

Comments
 (0)