【发布时间】:2019-02-27 23:54:23
【问题描述】:
我知道关于这个一般性主题有很多问题和答案,但在 .Net Core 2.2 中,所需/生成的代码是不同的。
如果您在 VisualStudio 中使用域身份验证创建一个新的 .Net Core 2.2 项目,使用 AzureAD,您将生成一个非常轻量级的项目,该项目可以正确进行身份验证。在 Startup.cs 中,您将找到下面启用此域 AzureAD 身份验证的代码,然后您相应地使用 [Authorize] 属性。问题是如果您尝试在另一个 .Net Core 2.2 项目中使用它。
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
我已将其与正确的设置一起复制到我已经创建的 .Net Core 2.2 项目中。它不是一个轻量级的项目,但不是广泛且非常简单。我得到了上面的错误,InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found
所以我想了解这怎么可能? Visual Studio 生成的 .Net Core 2.2 项目如何仅使用此代码,而另一个项目则不能?
【问题讨论】:
标签: authentication .net-core azure-active-directory