Issue title: signin-oidc 404
 Issue body: Hello,

I followed the sample of this repository to create a project with openiddict.
My login works fine until signin-oidc, the server returns 404 error.

I tried running the sample and the login doesn't reach the authorize controller, it continues to display the login form but the passwordsignin methods returns success.

I tried reading all the issues here similar to mine but I can't find a solution to my problem.

The Mvc.Server startup code

`public class Startup
	{
		public Startup(IConfiguration configuration)
		{
			Configuration = configuration;
		}

		public IConfiguration Configuration { get; }

		// This method gets called by the runtime. Use this method to add services to the container.
		public void ConfigureServices(IServiceCollection services)
		{
			services.Configure<CookiePolicyOptions>(options =>
			{
				// This lambda determines whether user consent for non-essential cookies is needed for a given request.
				options.CheckConsentNeeded = context => true;
				options.MinimumSameSitePolicy = SameSiteMode.None;
			});

			services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

			services.AddDbContext<CloudCareContext>(options =>
			{
				options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));

				options.UseOpenIddict<Guid>();
			});

			services.AddIdentity<User, Role>()
				.AddDefaultUI(UIFramework.Bootstrap4)
				.AddUserStore<CloudCareUserStore>()
				.AddRoleStore<CloudCareRoleStore>()
				.AddRoleManager<CloudCareRoleManager>()
				.AddSignInManager<CloudCareSignInManager>()
				.AddUserManager<CloudCareUserManager>()
				.AddEntityFrameworkStores<CloudCareContext>()
				.AddDefaultTokenProviders();

			services.Configure<IdentityOptions>(options =>
			{
				options.ClaimsIdentity.UserNameClaimType = OpenIddictConstants.Claims.Name;
				options.ClaimsIdentity.UserIdClaimType = OpenIddictConstants.Claims.Subject;
				options.ClaimsIdentity.RoleClaimType = OpenIddictConstants.Claims.Role;
			});

			services.AddOpenIddict()
				.AddCore(options =>
				{
					// Configure OpenIddict to use the Entity Framework Core stores and entities.
					options.UseEntityFrameworkCore().UseDbContext<CloudCareContext>().ReplaceDefaultEntities<Guid>();
				})

				.AddServer(options =>
				{
					// Register the ASP.NET Core MVC services used by OpenIddict.
					// Note: if you don't call this method, you won't be able to
					// bind OpenIdConnectRequest or OpenIdConnectResponse parameters.
					options.UseMvc();

					// Enable the authorization, logout, token and userinfo endpoints.
					options.EnableAuthorizationEndpoint("/connect/authorize")
						   .EnableLogoutEndpoint("/connect/logout")
						   .EnableTokenEndpoint("/connect/token")
						   .EnableUserinfoEndpoint("/api/userinfo");

					// Note: the Mvc.Client sample only uses the code flow and the password flow, but you
					// can enable the other flows if you need to support implicit or client credentials.
					options.AllowAuthorizationCodeFlow()
						   .AllowPasswordFlow()
						   .AllowRefreshTokenFlow();

					// Mark the "email", "profile" and "roles" scopes as supported scopes.
					options.RegisterScopes(OpenIddictConstants.Scopes.Email,
										   OpenIddictConstants.Scopes.Profile,
										   OpenIddictConstants.Scopes.Roles);

					// When request caching is enabled, authorization and logout requests
					// are stored in the distributed cache by OpenIddict and the user agent
					// is redirected to the same page with a single parameter (request_id).
					// This allows flowing large OpenID Connect requests even when using
					// an external authentication provider like Google, Facebook or Twitter.
					options.EnableRequestCaching();

					// During development, you can disable the HTTPS requirement.
					options.DisableHttpsRequirement();
				})

				.AddValidation();

			services.AddAuthentication();
		}

		// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
		public void Configure(IApplicationBuilder app, IHostingEnvironment env)
		{
			if (env.IsDevelopment())
			{
				app.UseDeveloperExceptionPage();
				app.UseDatabaseErrorPage();
			}
			else
			{
				app.UseExceptionHandler("/Home/Error");
				// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
				app.UseHsts();
			}

			app.UseHttpsRedirection();
			app.UseStaticFiles();
			app.UseCookiePolicy();

			app.UseAuthentication();

			app.UseMvc(routes =>
			{
				routes.MapRoute(
					name: "default",
					template: "{controller=Home}/{action=Index}/{id?}"
				);
			});

			InitializeAsync(app).GetAwaiter().GetResult();
		}

		private static async Task InitializeAsync(IApplicationBuilder app)
		{
			using (var scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
			{
				var context = scope.ServiceProvider.GetRequiredService<CloudCareContext>();
				await context.Database.EnsureCreatedAsync();

				// Note: when using a custom entity or a custom key type, replace OpenIddictApplication by the appropriate type.
				var manager = scope.ServiceProvider.GetRequiredService<OpenIddictApplicationManager<OpenIddictApplication<Guid>>>();

				if (await manager.FindByClientIdAsync("cloud-care-mvc") == null)
				{
					var descriptor = new OpenIddictApplicationDescriptor
					{
						ClientId = "cloud-care-mvc",
						ClientSecret = "CloudCare01",
						DisplayName = "Cloud Care MVC client",
						PostLogoutRedirectUris = { new Uri("https://localhost:5501/signout-callback-oidc") },
						RedirectUris = { new Uri("https://localhost:5501/signin-oidc") },
						Permissions =
						{
							OpenIddictConstants.Permissions.Endpoints.Authorization,
							OpenIddictConstants.Permissions.Endpoints.Logout,
							OpenIddictConstants.Permissions.Endpoints.Token,
							OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode,
							OpenIddictConstants.Permissions.GrantTypes.RefreshToken,
							OpenIddictConstants.Permissions.Scopes.Email,
							OpenIddictConstants.Permissions.Scopes.Profile,
							OpenIddictConstants.Permissions.Scopes.Roles
						}
					};

					await manager.CreateAsync(descriptor);
				}
			}
		}
	}`

The Mvc.Client startup code

`public class Startup
	{
		public Startup(IConfiguration configuration)
		{
			Configuration = configuration;
		}

		public IConfiguration Configuration { get; }

		// This method gets called by the runtime. Use this method to add services to the container.
		public void ConfigureServices(IServiceCollection services)
		{
			services.AddAuthentication(options =>
			{
				options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
			})

			.AddCookie(options =>
			{
				options.LoginPath = new PathString("/signin");
			})

			.AddOpenIdConnect(options =>
			{
				// Note: these settings must match the application details
				// inserted in the database at the server level.
				options.ClientId = "cloud-care-mvc";
				options.ClientSecret = "CloudCare01";

				options.RequireHttpsMetadata = false;
				options.GetClaimsFromUserInfoEndpoint = true;
				options.SaveTokens = true;

				// Use the authorization code flow.
				options.ResponseType = OpenIdConnectResponseType.Code;
				options.AuthenticationMethod = OpenIdConnectRedirectBehavior.RedirectGet;

				// Note: setting the Authority allows the OIDC client middleware to automatically
				// retrieve the identity provider's configuration and spare you from setting
				// the different endpoints URIs or the token validation parameters explicitly.
				options.Authority = "https://localhost:5401/";

				options.Scope.Add("email");
				options.Scope.Add("roles");
				options.Scope.Add("offline_access");

				options.SecurityTokenValidator = new JwtSecurityTokenHandler
				{
					// Disable the built-in JWT claims mapping feature.
					InboundClaimTypeMap = new Dictionary<string, string>()
				};

				options.TokenValidationParameters.NameClaimType = "name";
				options.TokenValidationParameters.RoleClaimType = "role";
			});

			services.Configure<CookiePolicyOptions>(options =>
			{
				// This lambda determines whether user consent for non-essential cookies is needed for a given request.
				options.CheckConsentNeeded = context => true;
				options.MinimumSameSitePolicy = SameSiteMode.None;
			});


			services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

			services.AddSingleton<HttpClient>();
		}

		// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
		public void Configure(IApplicationBuilder app, IHostingEnvironment env)
		{
			if (env.IsDevelopment())
			{
				app.UseDeveloperExceptionPage();
			}
			else
			{
				app.UseExceptionHandler("/Home/Error");
				// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
				app.UseHsts();
			}

			app.UseHttpsRedirection();
			app.UseStaticFiles();
			app.UseCookiePolicy();

			app.UseAuthentication();

			app.UseMvc(routes =>
			{
				routes.MapRoute(
					name: "default",
					template: "{controller=Home}/{action=Index}/{id?}");
			});
		}
	}`
 Comments: 
 Comment 0: I found the problem, the Userinfo uri was wrong. For others that have this issue check it!
Sorry for the issue.
 Comment 1: Glad you found the root cause of your issue! 👏 
{'source': 'GithubIssues', 'repo_name_with_owner': 'openiddict/openiddict-core', 'issue_id': 432082621, 'repo_stars': 2897.0}