此外,使用现有身份验证密码保护作为Azure WebApp托管的ASP.NET Core MVC网站

柠檬

我有一个具有ASP.NET Core Identity的现有ASP.NET Core MVC应用程序,在该应用程序中,我使用signInManager.PasswordSignInAsync[Authorize]属性的组合来强制用户登录到网站,并具有一定的作用。在本地和Azure WebApp中运行良好。

现在,我想将应用程序的预览版发布到另一个Azure WebApp。这次,我希望每个访问者在显示网站上的任何内容之前输入另一组凭据我想我想要类似.htaccess / BasicAuthenication的东西。但是,在用户输入第一组凭据之后,不应登录,因为他需要使用常规的登录程序(就像在实时版本中一样,该版本可以公开访问,但是其中某些页面要求用户登录)。基本上,我只想在不影响当前现有身份验证的基础上再增加一层密码保护

鉴于我想允许使用预览密码的任何人访问,以下解决方案似乎不适用于我的情况:

  • 将对WebApp的访问限制为防火墙设置。客户端IP不会来自某个IP范围,它们将由其ISP动态分配。
  • 将单个用户帐户与Azure AD一起使用。这可能是我的后备(尽管我不确定如何确切地实现),但我宁愿没有另一组个人用户凭据来保重。凭据甚至可以像预览//预览一样简单。

有没有简单的方法,例如在Startup类中添加两行代码来实现所需的第二级密码保护?

里奇G

您可以通过基本身份验证来进行第二次身份验证,这很简单,并且不需要太多代码。您将需要一个中间件,该中间件将在原始身份验证完成后进行拦截/调用

中间件

public class SecondaryBasicAuthenticationMiddleware : IMiddleware
{
    //CHANGE THIS TO SOMETHING STRONGER SO BRUTE FORCE ATTEMPTS CAN BE AVOIDED
    private const string UserName = "TestUser1";
    private const string Password = "TestPassword1";

    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        //Only do the secondary auth if the user is already authenticated
        if (!context.User.Identity.IsAuthenticated)
        {
            string authHeader = context.Request.Headers["Authorization"];
            if (authHeader != null && authHeader.StartsWith("Basic "))
            {
                // Get the encoded username and password
                var encodedUsernamePassword = authHeader.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries)[1]?.Trim();

                // Decode from Base64 to string
                var decodedUsernamePassword = Encoding.UTF8.GetString(Convert.FromBase64String(encodedUsernamePassword));

                // Split username and password
                var username = decodedUsernamePassword.Split(':', 2)[0];
                var password = decodedUsernamePassword.Split(':', 2)[1];

                // Check if login is correct
                if (IsAuthorized(username, password))
                {                   
                    
                    await next.Invoke(context);
                    return;
                }
            }

            // Return authentication type (causes browser to show login dialog)
            context.Response.Headers["WWW-Authenticate"] = "Basic";

            // Return unauthorized
            context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
        }
        else
        {
            await next.Invoke(context);
        }
    }

    //If you have a db another source you want to check then you can do that here
    private bool IsAuthorized(string username, string password) =>
        UserName == username && Password == password;
}

在启动时->配置(确保在现有的身份验证和授权之后添加此名称)

    //Enable Swagger and SwaggerUI
    app.UseMiddleware<SecondaryBasicAuthenticationMiddleware>(); //can turn this into an extension if you wish

    app.UseAuthentication();
    app.UseAuthorization();        

在启动-> ConfigureServices中注册中间件

services.AddTransient<SecondaryBasicAuthenticationMiddleware>();

chrome应该像这样弹出一个基本的身份验证对话框

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure部署后的ASP.NET Core MVC webapp错误

来自分类Dev

我可以使用.NET 4.6创建ASP.NET Core MVC网站吗?

来自分类Dev

在unbuntu和nginx上托管多个ASP NET Core网站作为反向代理

来自分类Dev

Azure在托管网站上如何进行计费(asp.net mvc)

来自分类Dev

在Azure函数中托管ASP.NET Core MVC应用程序

来自分类Dev

调用现有服务的新网站的最佳架构(具有身份验证和授权的 ASP.NET Web API)

来自分类Dev

当使用ASP.NET Core Web API中没有身份的cookie身份验证时,如何在登录时刷新CSRF令牌

来自分类Dev

ASP .NET CORE 2.2 JWT 和声明网站身份验证

来自分类Dev

使用IronPython扩展ASP.Net MVC网站

来自分类Dev

使用ASP.NET MVC 5设计CMS网站

来自分类Dev

如何使用WebListener和Windows身份验证将ASP.NET Core应用程序托管在IIS下?

来自分类Dev

如何使用WebListener和Windows身份验证将ASP.NET Core应用程序托管在IIS下?

来自分类Dev

access_denied 使用 facebook 身份验证登录到 asp.net MVC 5 网站时

来自分类Dev

Windows身份验证在现有的asp.net网站中不起作用

来自分类Dev

Azure AD身份验证redirect_uri在Linux托管的(Cloud Foundry)ASP.NET Core 2.2应用程序上未使用https

来自分类Dev

使用单个网站进行身份验证的多个MVC5网站(ASP.NET Identity v2)

来自分类Dev

Auth0 与 .Net Core ASP MVC 到 WebAPI 身份验证

来自分类Dev

将Windows身份验证与带有ASP.NET Core的Azure Service Fabric一起使用

来自分类Dev

使用 ASP.NET MVC 身份作为后端的 Xamarin 身份验证和令牌

来自分类Dev

使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

来自分类Dev

使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

来自分类Dev

Asp.net MVC网站内的WebBrowser

来自分类Dev

ASP .NET MVC 5 网站的性能诊断

来自分类Dev

使用运行Identity Server 4的ASP.NET CORE 3身份验证服务器对ASP.NET MVC 5应用(目标.net 4.5)进行身份验证

来自分类Dev

mvc 到 net core 2 迁移身份验证

来自分类Dev

ASP.NET Core MVC:设置身份Cookie的到期

来自分类Dev

ASP.NET Core MVC身份登录问题

来自分类Dev

如何配置ASP.NET Core 3.1应用程序以并行运行ReactJS和MVC网站

来自分类Dev

在未安装VisualStudio或IIS的Windows中托管ASP.NET MVC4网站

Related 相关文章

  1. 1

    Azure部署后的ASP.NET Core MVC webapp错误

  2. 2

    我可以使用.NET 4.6创建ASP.NET Core MVC网站吗?

  3. 3

    在unbuntu和nginx上托管多个ASP NET Core网站作为反向代理

  4. 4

    Azure在托管网站上如何进行计费(asp.net mvc)

  5. 5

    在Azure函数中托管ASP.NET Core MVC应用程序

  6. 6

    调用现有服务的新网站的最佳架构(具有身份验证和授权的 ASP.NET Web API)

  7. 7

    当使用ASP.NET Core Web API中没有身份的cookie身份验证时,如何在登录时刷新CSRF令牌

  8. 8

    ASP .NET CORE 2.2 JWT 和声明网站身份验证

  9. 9

    使用IronPython扩展ASP.Net MVC网站

  10. 10

    使用ASP.NET MVC 5设计CMS网站

  11. 11

    如何使用WebListener和Windows身份验证将ASP.NET Core应用程序托管在IIS下?

  12. 12

    如何使用WebListener和Windows身份验证将ASP.NET Core应用程序托管在IIS下?

  13. 13

    access_denied 使用 facebook 身份验证登录到 asp.net MVC 5 网站时

  14. 14

    Windows身份验证在现有的asp.net网站中不起作用

  15. 15

    Azure AD身份验证redirect_uri在Linux托管的(Cloud Foundry)ASP.NET Core 2.2应用程序上未使用https

  16. 16

    使用单个网站进行身份验证的多个MVC5网站(ASP.NET Identity v2)

  17. 17

    Auth0 与 .Net Core ASP MVC 到 WebAPI 身份验证

  18. 18

    将Windows身份验证与带有ASP.NET Core的Azure Service Fabric一起使用

  19. 19

    使用 ASP.NET MVC 身份作为后端的 Xamarin 身份验证和令牌

  20. 20

    使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

  21. 21

    使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

  22. 22

    Asp.net MVC网站内的WebBrowser

  23. 23

    ASP .NET MVC 5 网站的性能诊断

  24. 24

    使用运行Identity Server 4的ASP.NET CORE 3身份验证服务器对ASP.NET MVC 5应用(目标.net 4.5)进行身份验证

  25. 25

    mvc 到 net core 2 迁移身份验证

  26. 26

    ASP.NET Core MVC:设置身份Cookie的到期

  27. 27

    ASP.NET Core MVC身份登录问题

  28. 28

    如何配置ASP.NET Core 3.1应用程序以并行运行ReactJS和MVC网站

  29. 29

    在未安装VisualStudio或IIS的Windows中托管ASP.NET MVC4网站

热门标签

归档