联合身份验证后唯一标识用户

时间:2013-05-08 22:22:37

标签: security authentication authorization wif federated-identity

我刚刚开始尝试使用WIF来处理我正在编写的新应用程序。到目前为止,我已设法使LocalSTS正常工作并设置我的web.config以启用针对LocalSTS的联合身份验证。我的计划是暂时使用LocalSTS,并担心以后实施自定义STS。

我想使用联合身份验证来对用户进行身份验证,一旦经过身份验证,就会授权他们在内部执行各种操作。因此,STS将进行身份验证,应用程序将在内部进行授权。

要做到这一点,我需要在我的应用数据库中存储每个用户的授权操作(可能有数百个独特的操作),并在用户开始新会话后读取并兑现它们。

我想知道的是,如何将使用联合身份验证进行身份验证的用户映射到我的数据库中存在的唯一用户ID,同时仍然保持应用程序与我使用的STS无关(无论是ADFS,打开身份验证)等)?

nameidentifier令牌似乎是一个很好的候选者,但后来我读到SAML 2用不同的令牌替换它。

我完全走错了路吗?我错过了什么吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

姓名是一个很好的候选人,但是电子邮件,upn甚至是“唯一号码”都是好的。关键是 - 没有最终候选人。

我认为如果您的关注点仍然是不可知的,您应该考虑将rp的sts定义为“sts端点的地址和用于匹配用户的一组声明”。

这样,sts1可以定义为“https://sts1.blah”和“用户名声明”,但sts2可以是“https://sts2.blah”和“email”。

经过几年的经验,我认为这种方法是唯一的可能性,因为不同的阶段提供不同的主张,而且没有“一个保证永远发生的主张”。

话虽如此,我们大多数时候都认为任何sts至少会返回用户名或电子邮件,而rp可以信任。这简化了rp端用户的匹配。