asp.net-core - 将 Open ID Connect 与服务器端 Blazor 结合使用

标签 asp.net-core blazor

我想在我的服务器端 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 问题 herehere ,计划用于 .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/

相关文章:

asp.net-core - dotnet 发布在开发计算机上成功,构建代理失败,asp.net Netcoreapp2.1/win-x64

c# - 如何在 Blazor 中将带有参数的 onclick 添加到按钮?

razor - 模式在 Blazor 服务器端应用程序中不起作用

c# - 我可以在 ASP.NET Core 项目上将 URL Rewrite 与 web.config 一起使用吗?

c# - 即使使用任务,Blazor UI 也会卡住

c# - 为什么在使用SingleAsync时发生此错误?

blazor 变量参数传递给 onclick 函数

c# - GroupBy 与 EF Core 6.0 和 SQL Server

razor - 在 Blazor 项目中的 Razor 页面之间共享代码

c# - asp.core 页面 Razor 枚举下拉列表