0

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

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

为此,我需要将每个用户的授权操作(可能是数百个独特的操作)存储在我的应用程序数据库中,并在用户开始新会话时读取它们并兑现它们。

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

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

我是否以完全错误的方式接近这个?我错过了什么吗?

任何帮助将不胜感激。

4

1 回答 1

1

姓名是一个不错的候选者,但电子邮件、upn 甚至“唯一编号”也一样好。关键是 - 没有最终的候选人。

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

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

经过几年的经验,我认为这种方法是唯一的可能性,因为不同的 stses 提供了不同的声明,并且没有“一个声明可以保证总是发生”。

话虽如此,大多数时候我们假设任何 sts 至少会返回用户名或电子邮件,并且 rp 可以信任这一点。这简化了 rp 侧的用户匹配。

于 2013-05-08T22:34:38.153 回答