我正在尝试通过OpenID Connect协议(特别是-KeyCloak,使用外部授权服务器)来保护我的ASP.NET MVC Web应用程序,这一点并不重要。
我要查找的所有示例基本上都是安装Microsoft.AspNetCore.Authentication.OpenIdConnectnuget软件包并向Startup类添加一些配置代码:
services
.AddAuthentication()
.AddOpenIdConnect(options =>
{
options.Authority = authUrl;
options.ClientId = clientId;
options.ClientSecret = clientSecret;
options.ResponseType = OpenIdConnectResponseType.Code;
});
Run Code Online (Sandbox Code Playgroud)
然后,如果我[Authorized]向控制器操作添加属性,则当我尝试打开页面时,将重定向到/Identity/Account/Login系统页面,该部分在该部分Use another service to log in.显示OpenIdConnect用于通过远程身份验证服务器登录的按钮。
此按钮有效-重定向到授权服务器,并在成功登录后打开/Identity/Account/ExternalLogin并显示一个建议,用于填写丢失的用户本地注册声明(尤其是电子邮件)。
实际上,当然,地址/signin-oidc是最先打开的,我相信该处理程序将根据接收到的授权码完成身份验证过程。
但是,除OpenIDConnect外,我不需要任何其他授权方法。我需要未经授权的用户立即将其重定向到远程授权服务器。
如何防止其他登录方法并直接重定向到授权服务器,而不重定向到ASP.NET登录页面?