0

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

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

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

我想知道的是,如何将使用联合身份验证进行身份验证的用户映射到存在于我的数据库中的唯一用户标识,同时仍将应用程序与我使用的STS保持不可知(ADFS,open auth等)?

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

我接近完全错误的方式吗?我错过了什么吗?

任何帮助将不胜感激。

回答

1

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

我认为,如果你关心的是保持不可知的,你应该考虑,而定义RP为“STS端点的地址和一组用于匹配用户索赔”的STS。

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

经过几年的经验,我认为这种方法是唯一的可能性,因为不同的产品提供不同的声明,而且没有“保证始终发生的一个声明”。

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