ASP.NET Core身份验证的外部提供程序只有

3
我希望我的Asp.net core应用仅能配置为使用外部提供者,比如仅限于Facebook。换句话说,我不想让用户有创建带密码等本地账户的能力。
我应该如何修改Visual Studio生成的默认Asp.net core个人账户模板,以安全地删除创建本地用户账户的功能?
谢谢。

你可以修改登录和注册的视图,以删除那个。 - Joe Audette
是的,但我担心一些聪明的用户仍然可以玩弄系统并与控制器交互(这仍然可以工作)。同时,我不知道在那些控制器上删除什么不会破坏外部提供商的功能或打开安全漏洞。 - VMh
如果您在AccountController中注释掉了某些操作,但是发现需要使用其中一个被注释的操作,则可以将其取消注释。 - Joe Audette
在我的cloudscribe Core项目中,我有一个设置来禁用来自管理UI的dbauth,这样我就可以禁用本地登录和注册,但要等到社交认证设置完成后再执行。https://github.com/joeaudette/cloudscribe - Joe Audette
1个回答

0

我正在使用.UseRewriter()中间件,使我能够重定向到/Error页面,以处理不适用于我的应用程序的Identity页面(我只允许Github身份验证而不允许本地注册)

public static class IisRewriterConfigurationExtensions
{
    public static IApplicationBuilder UseIisRewriter(this IApplicationBuilder applicationBuilder)
    {
        using (var iisUrlRewriteStreamReader = File.OpenText("iis-application-route-rewrites.xml"))
        {
            var options = new RewriteOptions()
                .AddIISUrlRewrite(iisUrlRewriteStreamReader);

            applicationBuilder.UseRewriter(options);
        }

        return applicationBuilder;
    }
}

然后我在Startup.Configure()中调用app.UseIisRewriter();

我的iis-application-route-rewrites.xml文件看起来像这样

<?xml version="1.0" encoding="utf-8" ?>
<rewrite>
  <rules>
    <rule name="Redirect from Identity Forgot Password">
      <match url="^Identity/Account/ForgotPassword" />
      <action type="Redirect" url="Error?id=404" redirectType="Permanent" />
    </rule>
    <rule name="Redirect from Identity Reset Password">
      <match url="^Identity/Account/ResetPasswordConfirmation" />
      <action type="Redirect" url="Error?id=404" redirectType="Permanent" />
    </rule>
  <!-- More rules -->
  </rules>
</rewrites>

在我的 Login.cshtml.cs 文件中,我删除了所有不再希望用户访问的请求处理程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接