[英]Using Open ID Connect with Server Side 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();
如果我未登录,如何通知应用程序我要重定向到Identity Server?
编辑:Codevisions答案是一种解决方法。 我在这里和这里发现了尚未解决的github问题,计划在.NET Core 3.0 Preview 7中正式使用此问题。
添加到下面的ConfigureServices
代码。
services.AddMvcCore(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
以下代码段演示了如何使用Authorize属性在Web API中注释数据控制器,以重定向未经身份验证的用户登录(也许是Identity Server)。
[Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
[Route("api/[controller]")]
public class SampleDataController : Controller
{
// ..
}
注意:在启动类中需要适当的配置
注意:如果您使用服务而不是Web API,建议您不要使用前者,而应使用后者。
注意:我不知道@attribute指令,但是为什么不尝试一下并告诉我们它是否对您有用呢?
@attribute [Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
稍后,我将尝试添加更多信息,但运行您的应用并询问有关您所面临问题的问题...
希望这可以帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.