首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据ASP.Net核心应用程序中的用户应用角色,提供不同结果的最佳实践是什么?

问根据ASP.Net核心应用程序中的用户应用角色,提供不同结果的最佳实践是什么?
EN

Stack Overflow用户
提问于 2022-07-15 10:40:47
回答 1查看 55关注 0票数 0

我有一个VueJS前端和一个Asp.Net核心后端。

用户通过前端的VueJS MSAL库进行身份验证,并将结果的承载令牌与每个请求一起提供给后端。我还获得ID令牌和ID令牌声明。

在后端,对令牌进行验证,并检查范围。

范围检查:

代码语言:javascript
复制
static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };
internal void VerifyAccessAllowed()
{
    HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
}

令牌验证:

代码语言:javascript
复制
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApi(builder.Configuration);

builder.Services.AddAuthorization();

var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();

现在,我创建了"App“,并分配给了用户。作为ID令牌声明,我获得了应用程序角色。

Azure Portal中的应用程序角色

来自ID令牌的角色(jwt.io)

现在,我希望根据用户被分配给的角色给出与后端不同的结果。主要是列表的子集。"CEO“看到完整的列表,而"PM”只看到指定的子集。

现在看来,我无法访问后端的ID令牌声明。我只需在头中发送ID令牌,并尝试手动解码它,但这对我来说似乎很奇怪,因为其他东西几乎都是自动工作的。

我认为必须有一个干净而简单的方法来做到这一点,因为这种情况并不少见。

对我来说,有两种可能的选择:

  1. 在访问令牌中包括角色
  2. 发送和解码每个请求的ID令牌

这其中是否有任何一种可能,或者有另一种很好的方法来做到这一点。

我希望我提供了所有必要的信息,如果没有,我会提供:)

提前谢谢,保罗!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 12:40:40

我会回答这个问题,以防别人提出类似的问题。

我采用的方法的问题是,我试图通过两个应用程序注册来验证前端和后端。前端注册提供的访问令牌对于后端注册(通过API权限)也是有效的。通过删除前端注册并通过后端注册直接请求访问,后端从之前没有的令牌获得了对角色的访问权。(我读到了一些有关这方面的内容,这似乎与范围有关,而且这些角色是为前端注册而创建的。)

现在,通过我的解决方案,我只使用一个应用程序注册。这也会导致前端无法通过Azure Portal得到保护,这是我手动完成的。

我不确定这是否是最优的解决方案,但它适用于我的用例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72992748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档