Blazor 服务器端 => 没有身份支架的身份验证可能吗?
Blazor Serverside => Authentication without Identity Scaffolding POSSIBLE?
我正在从事一个 Blazor 服务器端项目(为未来的工作项目学习)。我正在尝试在 asp.net 核心应用程序中的应用程序中实施身份验证
=> 与 httpcontext.SignInAsync(CookieDefaults.AuthenticationScheme,校长);
但我真的找不到任何相关信息 => Cookie 或 JWT Auth 在 Blazor 服务器端应用程序上是否有可能或更好地说明逻辑?
我的项目结构:Database/API <= Blazor App
我正在考虑使用我的 API 进行 Jwt Auth 并使用 LocalStorageService 存储 jwt 令牌 => 但是当我拥有有效的 jwt 令牌时,如何告诉我的 blazor 应用程序我已获得授权?
我可以实现自定义授权过滤器吗?如果令牌仍然有效,过滤器是否应该检查 api?
现在有点困惑,blazor 真的很棒,我认为它是真正的未来框架,但身份验证对我来说有点难以理解
仅供参考:如果可能的话,我宁愿不使用身份
我没有 Code atm,因为我仍在努力研究 blazor 并尝试其他东西
首先,是的,这是可能的,但你为什么要重建那里的东西。如果操作不当,您的系统可能会处于易受攻击的状态。
其次,问题需要更加清晰才能得到正确回答。
第三,Jwt 令牌是可能的我刚刚用 jwt 令牌构建了我的系统。
第四,Jwt token storage更多的是可以在里面存储信息。并且可以由 API 验证并由客户端读取
Blazor 服务器应用程序中的身份验证可以通过注册 Cookie 或 JWT 身份验证处理程序来进行。因为 Blazor 服务器在 ASP.NET 核心应用程序中运行,所以 Cookie 身份验证更简单。您可以通过在 Startup.cs:
的 ConfigureServices 方法中添加一个 Cookie AuthenticationHandler 来做到这一点
services.AddAuthentication()
.AddCookies();
然后您还需要指示中间件检查传入的请求是否具有有效的 Cookie,以便可以设置 HttpContext 上的 ClaimsPrincipal 属性:
app.UseAuthentication();
通过使用此配置,每个使用您通过从控制器调用 SignInAsync 向他们发出的 Cookie 请求您的应用程序的用户都经过身份验证。您不能将 Cookie 附加到 Razor 组件内的 Http 响应,因为响应已经完成(所有更改都通过 WebSockets 连接发送)。然后,您可以使用内置的 AuthorizeView 组件只向经过身份验证的用户呈现内容。无需进一步配置,您向其发出 cookie 的每个用户都经过身份验证。
您也可以使用 JWT 身份验证。就像 Cookies ASP.NET 的情况一样,Core 也有内置的中间件来实现这一点。在这种情况下,我将构建一个实现抽象 class AuthenticationStateProvider 的自定义 AuthenticationProvider。在 GetAuthenticationStateAsync() 方法中,您从 LocalStorage 检索令牌。然后您需要检查其有效性,以便可以返回相应的 AuthenticationState(它有一个类型为 ClaimsPrincipal 的 属性)。
您可以构建自己的授权过滤器并检查令牌有效性。
我正在从事一个 Blazor 服务器端项目(为未来的工作项目学习)。我正在尝试在 asp.net 核心应用程序中的应用程序中实施身份验证 => 与 httpcontext.SignInAsync(CookieDefaults.AuthenticationScheme,校长); 但我真的找不到任何相关信息 => Cookie 或 JWT Auth 在 Blazor 服务器端应用程序上是否有可能或更好地说明逻辑?
我的项目结构:Database/API <= Blazor App
我正在考虑使用我的 API 进行 Jwt Auth 并使用 LocalStorageService 存储 jwt 令牌 => 但是当我拥有有效的 jwt 令牌时,如何告诉我的 blazor 应用程序我已获得授权?
我可以实现自定义授权过滤器吗?如果令牌仍然有效,过滤器是否应该检查 api?
现在有点困惑,blazor 真的很棒,我认为它是真正的未来框架,但身份验证对我来说有点难以理解
仅供参考:如果可能的话,我宁愿不使用身份 我没有 Code atm,因为我仍在努力研究 blazor 并尝试其他东西
首先,是的,这是可能的,但你为什么要重建那里的东西。如果操作不当,您的系统可能会处于易受攻击的状态。
其次,问题需要更加清晰才能得到正确回答。
第三,Jwt 令牌是可能的我刚刚用 jwt 令牌构建了我的系统。
第四,Jwt token storage更多的是可以在里面存储信息。并且可以由 API 验证并由客户端读取
Blazor 服务器应用程序中的身份验证可以通过注册 Cookie 或 JWT 身份验证处理程序来进行。因为 Blazor 服务器在 ASP.NET 核心应用程序中运行,所以 Cookie 身份验证更简单。您可以通过在 Startup.cs:
的 ConfigureServices 方法中添加一个 Cookie AuthenticationHandler 来做到这一点services.AddAuthentication()
.AddCookies();
然后您还需要指示中间件检查传入的请求是否具有有效的 Cookie,以便可以设置 HttpContext 上的 ClaimsPrincipal 属性:
app.UseAuthentication();
通过使用此配置,每个使用您通过从控制器调用 SignInAsync 向他们发出的 Cookie 请求您的应用程序的用户都经过身份验证。您不能将 Cookie 附加到 Razor 组件内的 Http 响应,因为响应已经完成(所有更改都通过 WebSockets 连接发送)。然后,您可以使用内置的 AuthorizeView 组件只向经过身份验证的用户呈现内容。无需进一步配置,您向其发出 cookie 的每个用户都经过身份验证。
您也可以使用 JWT 身份验证。就像 Cookies ASP.NET 的情况一样,Core 也有内置的中间件来实现这一点。在这种情况下,我将构建一个实现抽象 class AuthenticationStateProvider 的自定义 AuthenticationProvider。在 GetAuthenticationStateAsync() 方法中,您从 LocalStorage 检索令牌。然后您需要检查其有效性,以便可以返回相应的 AuthenticationState(它有一个类型为 ClaimsPrincipal 的 属性)。
您可以构建自己的授权过滤器并检查令牌有效性。