我目前正在设计一个系统使用asp.net核心,我想执行基于权利的授权,但一个特定的部分令我困惑。如何管理用户声明?
当提出索赔时,索赔将包括类型和价值以及可选的发行人。在处理程序中,可以在确认访问之前检查此索赔和发行人。
但是,这个发行者没有存储在身份数据库,那么处理程序如何检查发行人?
我误解了这一切是如何工作的?我的理解是,用户提出某种类型的权利主张,他们的权利要求具有一定的价值,发行人是实际具有该用户价值的权利要求类型的验证人。
处理程序将检查值,并可能检查发行者,但是当数据库不存储时,它不能。那时我不明白发行人的观点。
我希望用户拥有一系列的声明,包括验证这些声明的人和内容,以及应用程序随时能够验证这些声明。
请帮我理解。
我已经测试了这个像这样:
- 使用带有标识的asp.net核心应用。
- 注册一个用户。
- 向包含类型,值和发行者的用户添加索赔。 (例如,EmployeeNumber,312,Microsoft
- 在控制器/操作上添加一个[Authorize(Policy =“MicrosoftEmployeesOnly”)]以限制访问
- 将此策略添加到具有需求的StartUp.cs中的服务中。
- 添加具有处理程序的需求代码,该处理程序检查用户是否具有EmployeeNumber类型的声明,并具有值并且由Microsoft颁发。
- 登录和用户声明已从db加载到标识
- 处理程序将无法验证用户,因为发行人(Microsoft)已经丢失,现在只是说Local Authority。
我能想到的唯一一件事就是将声明添加到数据库中,它被认为是由微软验证的,现在由微软代表应用程序(本地机构)持有。
如果这是真的,那么:
- 为什么在所有检查发行人的任何处理?
- 你如何撤销索赔?
我希望能够有选择地去那个发行机构并在我想要的时候检查这个索赔,这意味着发行人可以撤销/无效索赔。该员工声称他们在微软拥有员工编号,并且最初由Microsoft进行验证。一段时间后,微软将员工赶出去并在他们的系统中将他移除。每次用户登录时,应用程序都应该能够与Microsoft进行核对,以确定索赔是否有效。在这种情况下,它将不再有效。
我会有点生气吗?
嘿。对不起,我不得不删除我的答案,因为我没有足够的时间来解决我的答案,并且在当前状态下,它看起来不像你在找什么......我希望另一个用户能够协助你。 –
马蒂亚斯 - 感谢您的时间 –