我对使用Blazor WebAssembly ASP.NET Core托管的Web应用程序中的身份验证有疑问。使用的数据库是Azure SQL。
我要避免在数据库中存储密码,因此用户只能使用Microsoft帐户(与项目有关)。
到目前为止,用户使用Azure AD作为第三方身份验证提供程序登录。重定向回Web应用程序后,将创建一个用户,该用户的声明仅包含来自Azure的电子邮件。将用户定向到注册页面,在该页面中,电子邮件输入设置为当前的用户声明电子邮件。当用户单击注册按钮时,提供的信息现在存储在数据库中。
问题是我现在在数据库中有一个用户,但是声明仍然只是电子邮件。我希望能够在不同页面上使用AuthorizeView role
标签,因此想知道是否可以使用用户在注册页面中指定的角色来更新声明?此时,此数据仅存储在数据库中。
如果这是一个不好的做法,我还有其他类似的方法可以使它起作用吗?
答案 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请求范围