我使用预安装的Visual Studio解决方案正在处理我的第一个OAuth解决方案之一。
我的身份验证效果很好,当客户端调用 /token
时,他们会得到一个携带者令牌,一切都很好。该令牌是一个"用户级别"令牌,您可以在对服务器的每个请求中看到它。这意味着我可以在这些端点上添加[Authorize]
,只有用户应访问。
但是,与此同时,我还希望我的服务器应用程序具有"完整访问权限"。他们需要能够获得列表累积的多个用户,删除内容等。
这是我的问题,我认为可以很容易地一起回答:
- 您如何与永久令牌(API令牌?)一起管理两个短的代币(承载令牌?)
- 我在访问级别上有什么不同,因此某些方法需要永久令牌?
- 我如何以相同的方法在访问级别上有所不同(即典型的获取方法,用户只能获取"他的项目",而管理员令牌可以获得"全部")
可能超级简单 - 很可能我只是不知道在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 ...
}