Blazor WebAssembly+Duende.IdentityServer+BFF架构在HTTP协议下无法完成授权的问题求助
Blazor WebAssembly+Duende.IdentityServer+BFF架构在HTTP协议下无法完成授权的问题求助
大家好,我在开发环境遇到了一个授权相关的问题,想请教一下社区的各位大佬:
我有两个基于.NET 7的示例项目,一个是Duende Identity Server服务端,另一个是Blazor WebAssembly客户端,采用了最新版的Duende Identity Server并使用BFF(Backend For Frontend)协议。
问题描述
当客户端和服务端全部使用HTTPS协议时,一切都正常,Blazor客户端可以顺利完成认证和授权流程;但切换到HTTP协议后,就出现了授权失败的情况,日志输出如下:
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2]
Authorization failed. These requirements were not met:
DenyAnonymousAuthorizationRequirement: Requires an authenticated user.
我清楚生产环境必须使用HTTPS,但当前处于开发调试阶段,理论上应该支持HTTP模式,所以想解决这个问题。
项目与复现步骤
我把项目代码放在了公开仓库里,大家可以克隆下来复现问题:
- 复现HTTP模式的问题:直接运行两个项目——
Binande.Identity和Binande.Admin.Server,就能看到授权失败的现象。 - 验证HTTPS模式正常的步骤:
- 修改两个项目
launchSettings.json中的applicationUrl,替换为HTTPS地址:Binande.Admin.Server:"applicationUrl": "https://localhost:5002"Binande.Identity:"applicationUrl": "https://localhost:5001"
- 修改
Binande.Identity项目中IdentityServerConfig.cs里的交互式保密客户端配置:RedirectUris = { "https://localhost:5002/signin-oidc" }, PostLogoutRedirectUris = { "https://localhost:5002" }, - 修改
Binande.Admin.Server项目Program.cs中的Authority地址:options.Authority = "https://localhost:5001";
- 修改两个项目
我的疑问
想请教一下,在开发环境下,需要怎么调整配置,才能让这套Blazor WASM+Duende IDP+BFF的架构在HTTP协议下正常完成授权?
补充说明:我已经在Cookie策略和相关配置中设置了以下参数,但问题仍然存在:
options.RequireHttpsMetadata = false;options.Cookie.SameSite = SameSiteMode.Lax;options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
感谢各位的帮助!
备注:内容来源于stack exchange,提问作者Milad Ashrafi
相关产品推荐
相关产品推荐

