我想在我的服务器端 Blazor 应用程序中使用 Open ID Connect 和 Identity Server 4 进行授权。我在 MVC 应用程序中使用了相同的设置。
使用最新的 .NET Core 版本 3.0 Preview 6,可以将属性“@attribute [Authorize]”添加到站点。但是,如果我没有获得授权,我就不会被重定向到 Identity Server 来登录,因为我是在我的 MVC 应用程序中使用的。相反,该站点仅显示消息“未授权”。
在 Startup.cs 中,我有以下设置:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "myClient";
options.SaveTokens = true;
});
和
app.UseAuthentication();
如果我没有登录,我如何告诉应用程序我想被重定向到身份服务器?
编辑:Codevisions 答案是一种解决方法。我发现了未决的 github 问题 here和 here ,计划用于 .NET Core 3.0 Preview 7,可能会正式涵盖此问题。
最佳答案
添加到 ConfigureServices
下面的代码。
services.AddMvcCore(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
关于asp.net-core - 将 Open ID Connect 与服务器端 Blazor 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580654/