C# 如何使用Azure后端功能保护静态客户端blazor应用程序?

C# 如何使用Azure后端功能保护静态客户端blazor应用程序?,c#,authentication,azure-functions,blazor,C#,Authentication,Azure Functions,Blazor,所以,我想了解一下目前正在进行的整个无服务器和静态web应用程序主题 我的计划是创建一个C#客户端blazor应用程序,作为一个静态网站托管,由C#Azure函数完成后端工作。到现在为止,一直都还不错。处理我所有功能的代码似乎非常简单 另一方面,身份验证是一件完全不同的事情。当涉及到如何真正正确地保护我的应用程序时,我有点不知所措,只允许人们在登录后进入 然而,在读了一些关于如何做安全性的书之后,我仍然有一些问题没有回答 如何在应用程序中进行身份验证和安全性?我正在阅读以下文章:这篇文章解释了如

所以,我想了解一下目前正在进行的整个无服务器和静态web应用程序主题

我的计划是创建一个C#客户端blazor应用程序,作为一个静态网站托管,由C#Azure函数完成后端工作。到现在为止,一直都还不错。处理我所有功能的代码似乎非常简单

另一方面,身份验证是一件完全不同的事情。当涉及到如何真正正确地保护我的应用程序时,我有点不知所措,只允许人们在登录后进入

然而,在读了一些关于如何做安全性的书之后,我仍然有一些问题没有回答

  • 如何在应用程序中进行身份验证和安全性?我正在阅读以下文章:这篇文章解释了如何在身份验证提供商(如Facebook、Google等)的范围内实现安全性。然而,来自Asp.Net身份背景的我如何实际使用我的自定义身份设置?例如,我想提供一种在我的客户端blazor应用程序中注册和登录的方法,我希望我能找到像这里这样的身份,它负责用户管理等

  • 如果我正确地完成了身份验证部分,我的客户端应用程序应该如何反映登录状态?考虑到后面没有服务器,我不能让MVC控制器这样的东西发出“登录”视图或“登录”视图,这取决于客户端的身份验证状态


  • 如果有人能在这里给我一些指导,那就太好了。

    这对于StackOverflow来说有点太宽泛了,但是让我用不同的方式来分解这个问题,并解释一下如何做到这一点

    这里有三个主要要求:

  • 管理用户(登录、注册等)
  • 在服务器端,确定用户是否已登录
  • 在客户端,确定用户是否已登录
  • 让我们看看在每种情况下该怎么做

    管理用户(登录、注册等) 您必须记住的第一件事是ASP.NET核心标识不要求您使用它附带的Razor Pages UI。你甚至不必使用最初搭建的任何东西。没有任何东西可以阻止您拥有一个传递用户名/密码并对用户进行身份验证的函数/事件/端点/等。注册和身份框架的其余部分也一样。
    如果您不想重新发明轮子,而且由于这是一个安全框架,您肯定不应该这样做,那么可以使用ASP.NET核心标识

    在服务器端,确定用户是否已登录。 有多种方法可以做到这一点。因为您的客户机是基于web的,所以您可以在令牌(例如)和cookie之间做出选择。但是,由于您正在进行水疗,现在的建议是使用JWTs。您至少有两种方法可以实现这一目标:

  • 您可以使用Microsoft提供的软件包自行生成令牌,并使用
  • 如果您认为以后会添加更多的客户端,比如移动应用程序,那么您可能需要调查是否有机会。有一个新的包,它使用ASP.NET核心标识将模板中的大部分IdentityServer4抽象出来。不过,如果你只打算使用一款Blazor应用程序,这可能会有些过分
  • 显然,您也可以查看第三方框架,但在考虑它们之前,您需要确保它们的代码已从安全角度得到正确验证

    在客户端,确定用户是否已登录。 我不能给你太多关于这一部分的信息,因为我没有与Blazor合作过。然而,很可能存在一些授权属性或授权给定路由的方法,就像可以在Angular和React中完成一样。我建议你看看这里:。

    需要记住的要点是,登录端点将返回客户端生成的JWT(前两个点的组合),并且您可以很容易地在客户端中看到JWT的值(如用户名)。

    谢谢,这非常有见地。这确实是一个宽泛的问题,但我想这主要是因为我还不了解在哪些方面可以提出详细的问题。