MVC集成Azure AD B2C认证遇ERR_SSL_PROTOCOL_ERROR问题求助
解决MVC集成Azure AD B2C登录后出现ERR_SSL_PROTOCOL_ERROR的问题
核心原因
你遇到的ERR_SSL_PROTOCOL_ERROR是因为本地MVC应用未启用SSL,但Azure AD B2C尝试跳转到配置的HTTPS重定向地址https://localhost:53843/,本地服务无法处理HTTPS请求导致的。之前Angular和其他.NET项目能正常运行,大概率是因为那些项目使用了HTTP的重定向URI,或者项目默认启用了SSL。
具体解决步骤
启用本地MVC项目的SSL
- 在Visual Studio中右键点击项目 → 选择「属性」→ 切换到「调试」标签页。
- 勾选「启用SSL」选项,此时会生成一个HTTPS的本地地址(比如
https://localhost:53843/)。 - 确保这个地址和Web.config中
ida:RedirectUri的配置完全一致,包括端口号。 - 若手动配置IIS Express,需确认项目的
.vs/config/applicationhost.config文件中,对应站点的绑定已添加正确的SSL证书和端口。
统一重定向URI配置
- 登录Azure AD B2C门户,找到对应的应用注册。
- 在「重定向URI」列表中,确保同时配置了和Web.config一致的HTTPS地址(若要测试HTTP,也可添加
http://localhost:53843/,但生产环境必须用HTTPS)。 - 保存配置后,等待5-10分钟让配置生效。
调整认证中间件设置(针对OWIN配置)
- 打开Startup.cs文件,检查OpenIdConnect中间件的配置:
- 确保
RedirectUri参数直接引用Web.config中的配置值,比如:RedirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"] - 确认
CallbackPath设置为默认的/signin-oidc(这个路径是认证中间件自动处理的,无需手动添加控制器)。 - 若有
RequireHttpsMetadata属性,确保设置为true(生产环境必须,本地开发可临时设为false但不推荐)。
- 确保
- 打开Startup.cs文件,检查OpenIdConnect中间件的配置:
确保登录后跳转至Home/Index
- 在Home控制器的Index方法上添加
[Authorize]属性,强制用户认证后才能访问。 - 检查路由配置(RouteConfig.cs),确保默认路由指向
Home/Index:routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); - 认证成功后,中间件会自动跳转到用户原本请求的页面,若用户直接访问登录入口,会跳转至默认路由对应的Home/Index。
- 在Home控制器的Index方法上添加
额外测试建议
如果暂时无法启用SSL,可临时将Web.config中的ida:RedirectUri改为http://localhost:53843/,同时在Azure AD B2C门户添加该HTTP地址作为重定向URI,重启应用后测试。但注意此方式仅适用于本地开发,生产环境必须使用HTTPS。
内容的提问来源于stack exchange,提问作者spalMcc
相关产品推荐
相关产品推荐

