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

时间:2017-09-05 19:03:22

标签: c# asp.net authentication asp.net-web-api oauth

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

我的身份验证工作正常,当客户端调用/token时,他们会获得一个不记名令牌,一切正常。此令牌是“用户级”令牌,您可以在每次向服务器发出请求时看到该令牌。这意味着我只能在用户应该访问的端点上添加[Authorize]

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

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

  1. 你如何管理短期代币(持票人代币?)和永久代币(API代币?)
  2. 我如何在访问级别上有所不同,因此某些方法需要永久令牌?
  3. 我在同一方法中如何区别访问级别(即典型的GET方法,用户只能获得“他的项目”而管理员令牌可以“全部”)
  4. 可能超级简单 - 我很可能只是不知道要在Google上搜索哪些关键字!

1 个答案:

答案 0 :(得分:1)

可能看起来很简单,但它涉及很多概念,可以从你的问题中证明其中的一些:

  

1.你如何管理短期代币(持票人代币?)和永久代币(API代币?)

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

  

2.如何区分访问级别,因此某些方法需要永久令牌?

您需要创建一个Rolemanager类,并且需要将其添加到Owin Context,现在在Authorize中您可以修改属性以隐藏角色,如下所示{{1} }}

  

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

您需要根据[Authorize(Roles="Admin")]创建自定义逻辑,以便该用户是否为Role并且基于此用户可以为拥有该用户的人创建Admin管理员访问。我希望我的第二点解释能够回答这个问题

  

4.如何在同一方法中对访问级别有所区别(即典型的GET方法,用户只能得到"他的项目"而管理员令牌   可以获得"所有")

根据角色,您可以获得permanent token用户或all用户的列表 这是一个伪代码供您理解

Single