AzureAD/OIDC .Net Framework 和 .Net Core 中的身份验证差异
AzureAD/OIDC authentication differences in .Net Framework and .Net Core
我正在尝试在 ASP.Net 核心应用程序中使用 AzureAD 身份验证,并使一些控制器操作不需要用户登录。
使用 Visual Studio 2019,如果我创建一个全新的 ASP.Net 框架应用程序和 select Work/School 帐户进行身份验证 - HomeController 装饰有 Authorize 属性。一旦我 运行 应用程序,我就会被重定向到 Azure 登录屏幕。如果我将 Authorize 属性从 Home 控制器的顶部移动到 Contact 操作,当我 运行 应用程序时,我不会被重定向到登录,直到我单击 Contact link。这正是我所期望的。
如果我创建一个全新的 ASP.Net 核心应用程序(再次 selecting Work/School 帐户进行身份验证)- 并将授权属性从 Home 控制器的顶部移动到隐私操作 - 我一 运行 应用程序就被重定向到登录,而不是等待我导航到隐私操作。
代码示例
这个
[Authorize]
public class HomeController : Controller
...
public IActionResult Privacy()
...
与此行为相同
public class HomeController : Controller
...
[Authorize]
public IActionResult Privacy()
...
在ASP.Net核心。
1) 这两者之间的身份验证有何不同?
2) 有没有一种简单的方法可以使 ASP.Net 核心应用程序仅在点击 Authorize 属性时进行身份验证?
这是因为 asp.net 核心模板创建了一个全局 AuthorizeFilter
以确保所有操作都需要经过身份验证的用户才能访问:
.NET 核心 2.x :
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.Net Core 3.x:
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
您可以删除过滤器:
.NET 核心 2.x :
services.AddMvc()
.NET 核心 3.x :
services.AddControllersWithViews();
我正在尝试在 ASP.Net 核心应用程序中使用 AzureAD 身份验证,并使一些控制器操作不需要用户登录。
使用 Visual Studio 2019,如果我创建一个全新的 ASP.Net 框架应用程序和 select Work/School 帐户进行身份验证 - HomeController 装饰有 Authorize 属性。一旦我 运行 应用程序,我就会被重定向到 Azure 登录屏幕。如果我将 Authorize 属性从 Home 控制器的顶部移动到 Contact 操作,当我 运行 应用程序时,我不会被重定向到登录,直到我单击 Contact link。这正是我所期望的。
如果我创建一个全新的 ASP.Net 核心应用程序(再次 selecting Work/School 帐户进行身份验证)- 并将授权属性从 Home 控制器的顶部移动到隐私操作 - 我一 运行 应用程序就被重定向到登录,而不是等待我导航到隐私操作。
代码示例
这个
[Authorize]
public class HomeController : Controller
...
public IActionResult Privacy()
...
与此行为相同
public class HomeController : Controller
...
[Authorize]
public IActionResult Privacy()
...
在ASP.Net核心。
1) 这两者之间的身份验证有何不同? 2) 有没有一种简单的方法可以使 ASP.Net 核心应用程序仅在点击 Authorize 属性时进行身份验证?
这是因为 asp.net 核心模板创建了一个全局 AuthorizeFilter
以确保所有操作都需要经过身份验证的用户才能访问:
.NET 核心 2.x :
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.Net Core 3.x:
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
您可以删除过滤器:
.NET 核心 2.x :
services.AddMvc()
.NET 核心 3.x :
services.AddControllersWithViews();