OAuth用户身份验证与服务器身份验证和访问层相结合



我使用预安装的Visual Studio解决方案正在处理我的第一个OAuth解决方案之一。

我的身份验证效果很好,当客户端调用 /token时,他们会得到一个携带者令牌,一切都很好。该令牌是一个"用户级别"令牌,您可以在对服务器的每个请求中看到它。这意味着我可以在这些端点上添加[Authorize],只有用户应访问。

但是,与此同时,我还希望我的服务器应用程序具有"完整访问权限"。他们需要能够获得列表累积的多个用户,删除内容等。

这是我的问题,我认为可以很容易地一起回答:

  1. 您如何与永久令牌(API令牌?)一起管理两个短的代币(承载令牌?)
  2. 我在访问级别上有什么不同,因此某些方法需要永久令牌?
  3. 我如何以相同的方法在访问级别上有所不同(即典型的获取方法,用户只能获取"他的项目",而管理员令牌可以获得"全部")

可能超级简单 - 很可能我只是不知道在Google上搜索哪些关键字!

它可能很简单,但其中涉及许多概念,将从您的问题中证明其中一些是合理的:

1.您如何与永久令牌(API令牌?)

一起管理两个短的代币(承载令牌?)

通常,Web-API项目可以用作承载令牌作为身份验证机制,但它不支持您要求的高级授权方案,因此为了适合这些需求,您需要使用Customization of Identity model and implementation of the authorization based on the role

2.我在访问级别上有何不同,因此某些方法需要永久令牌?

您需要创建一个Rolemanager类,并且需要将其添加到Owin Context,现在在Authorize中,您可以修改属性以观察角色,如下所示[Authorize(Roles="Admin")]

3.我在访问级别上有何不同,因此某些方法需要永久令牌?

您需要基于Role创建自定义逻辑,以便该用户是否是Admin,并且基于该用户可以为拥有管理员访问的人创建permanent token。我希望我的第二点解释也回答了这个问题

4.我在访问级别上以相同的方法有何不同(即典型的获取方法,在管理员令牌时,用户只能获得"他的项目" 可以得到"全部")

基于角色,您可以获取all的列表,或Single用户这是您理解的伪代码

    if (userManager.IsInRole(user.Id, "Admin")) {
     // this roles is authorized to get the All records
    }
else{
  // Send a single record ...
 }

最新更新