【问题标题】:Claims based identity -> synchronize user data基于声明的身份 -> 同步用户数据
【发布时间】:2011-07-02 06:54:31
【问题描述】:

假设我有一个自定义 STS,它对 Web 应用程序的用户进行身份验证。该 STS 还包含用户 ID、姓名和电子邮件地址等数据。 我有以下情况:

我有一个使用 STS 的应用程序。在此应用程序中,用户可以创建一条记录,然后其中一个属性将是填充了用户 ID 的“创建者”。如果人们搜索此记录,我想向他们显示真实姓名而不是用户 ID。所以我需要以某种方式保持从用户 ID 到真实姓名的关系。

问题:在应用程序的数据库中,我只有一个用户 ID,但我想显示特定的用户详细信息。最好的方法是什么? 我考虑向我的 STS 添加一个方法,让我查询其他用户数据,但是如果我需要在屏幕上显示 50 条记录,它们都有不同的用户 ID,那将非常慢。 另一种解决方案是在我的应用程序中保留一个包含用户数据的表格。当我的应用程序第一次使用“用户”时,会将用户添加到此表中。但是您如何以及何时同步此表?

我想我更喜欢解决方案 2,每天晚上左右同步数据。

你们觉得呢?

【问题讨论】:

    标签: authentication wif claims-based-identity


    【解决方案1】:

    您可以修改数据库的架构吗?

    如果可以,那么您可以从 STS 获取名称和其他用户属性信息,然后将其保存在您身边(可能在用户数据库或相关记录中)。您会将其视为仅用于查询和显示的“参考”数据,并且不允许编辑。

    每次用户进行身份验证(并提供带有所有这些声明的令牌)时,您只需更新数据库中的信息。为此,您需要一个良好的唯一 ID(用户 ID?),它可以用作用户的永久、受信任的句柄。

    【讨论】:

    • 谢谢。很高兴听到在应用程序数据库中创建“只读”用户表是一个很好的解决方案。在大多数情况下,在身份验证事件上更新此表看起来不错。我认为我们可以提出一些引用用户的情况(作为“读者”或其他东西),但他们从不登录系统,但我们会为此解决一些问题。
    • 请给个建议。哪些声明或声明组合可用作唯一的永久用户 ID?
    • 您的“用户名”不够好?人们也经常使用电子邮件。一些 IdP 提供某种名称标识符(例如 LiveID、Google 等)。
    • 谢谢,@Eugenio。我不确定为 permanent cross-RP 用户标识符选择什么声明。或许你可以回答我的问题stackoverflow.com/questions/5814017/…
    猜你喜欢
    • 2014-02-28
    • 2016-01-10
    • 2015-04-09
    • 2016-02-19
    • 2013-07-20
    • 2015-04-15
    • 1970-01-01
    • 2012-03-26
    • 2014-02-19
    相关资源
    最近更新 更多