在数据库中存储声明 - 架构建议?

时间:2011-11-23 20:23:48

标签: database authentication wif claims

我们目前正在研究基于声明的身份验证,并使用WIF测试自定义STS。

我们一直在讨论如何在数据库中存储声明。 在许多简单示例中,权利要求作为简单属性存储在具有到用户的FK的单个表(例如,UserProfile)中。 然后生成声明,声明类型是URL加列名称(例如http://.../claims/email),值当然是数据库中的值。

但我需要更复杂的例子。您能分享一些在数据库中存储声明的方法吗? 我在考虑类似于包含所有声明类型的表,以及包含每个用户的值的表(对用户具有FK)。但我们真的需要一些灵感。所以你能分享的任何东西都会受到赞赏。 但同样,这是一个非常“扁平”的结构......

更新

我尝试制作一个简单的模型:http://imageshack.us/photo/my-images/690/suggestionn.png/

抱歉,无法发布图片。

我认为这对于简单的声明很有用。但是,如果我有所谓的“嵌套声明”,该怎么办? 假设声明类型描述用户有一个声明描述他对声明类型“文档”的资源“人员”的权利。 可以使用该模型来描述,但如果我们想要进一步描述该声明,该怎么办呢?假设该用户具有对资源“人员”的访问级别5。我看不出这是怎么可能的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可能希望考虑两件事:

不同的依赖方(RP)可以为同一用户生成不同的声明组。因此,您需要一个链接到声明类型的RP表。

(注意:您可以通过wtrealm参数区分哪个RP。)

此外,声明类型可以是一对多。如果存在某种类型的... / claim / groups且用户属于多个组,则会有多个此类声明类型的实例。

您是否看过Identity Server如何实现此目的?它使用SQL DB。