通过使用数据库中的数据更新Claim进行授权(托管Blazor WebAssembly ASP.NET Core)

时间:2020-04-14 12:33:48

标签: authentication asp.net-core blazor webassembly claims-authentication

我对使用Blazor WebAssembly ASP.NET Core托管的Web应用程序中的身份验证有疑问。使用的数据库是Azure SQL。

我要避免在数据库中存储密码,因此用户只能使用Microsoft帐户(与项目有关)。

到目前为止,用户使用Azure AD作为第三方身份验证提供程序登录。重定向回Web应用程序后,将创建一个用户,该用户的声明仅包含来自Azure的电子邮件。将用户定向到注册页面,在该页面中,电子邮件输入设置为当前的用户声明电子邮件。当用户单击注册按钮时,提供的信息现在存储在数据库中。

问题是我现在在数据库中有一个用户,但是声明仍然只是电子邮件。我希望能够在不同页面上使用AuthorizeView role标签,因此想知道是否可以使用用户在注册页面中指定的角色来更新声明?此时,此数据仅存储在数据库中。

如果这是一个不好的做法,我还有其他类似的方法可以使它起作用吗?

1 个答案:

答案 0 :(得分:0)

要使用AuthorizeView role,角色声明应由您的身份提供者(在您的情况下为Azure AD)返回。您的应用程序应通过询问相应的范围来提出这些要求。
根据文档Permissions and consent in the Microsoft identity platform endpoint个人资料范围应返回角色声明。

文档Secure an ASP.NET Core Blazor WebAssembly standalone app with Azure Active Directory说明了如何从Azure AD请求范围