为“新”用户提供多个受信任的STS

| 将Windows Identity Foundation(WIF)与多个安全令牌服务(STS)一起使用时,是否可以在用户首次访问应用程序之前对其进行配置? 例如,假设我有一个名为BufferOverrun的网站,用户可以在其中登录并提出/回答问题,而我想支持使用外部Google帐户进行身份验证。用户首次访问该页面时,必须使用其Google帐户进行身份验证,然后他们才能访问该网络应用程序。在这种情况下,有两个STS,即Google(用于身份验证)和一个自定义应用程序(用于授权)。 在用户访问系统之前,如何为用户分配声明? 由于身份是我的应用程序的外部所有者,因此我无法直接将声明分配给该身份(而且我也不想,因为它们是特定于应用程序的)。但是由于用户尚未访问系统,因此我没有内部身份来分配声明。我看到两种可能的解决方案: 等待用户访问系统(创建一些默认的特定于应用程序的声明),然后使用一些内部置备工具根据需要修改这些声明。 让置备工具允许用户在手动通过身份验证进行身份验证之前,手动映射默认身份声明(例如,电子邮件地址),以便在首次访问时,如果身份声明该声明,则会授予一组特定的应用程序声明。 我看到1和2都有一些问题。对于1,所有用户都具有对系统的一些隐式访问,即使默认的应用程序声明不允许任何功能。这对于像stackoverflow这样的东西似乎非常有用,在该情况下,初始帐户具有一定的权限集,并且当用户使用系统时,会授予新的声明。但是,这可能不是所有应用程序都希望的。 2容易出错,因为它需要管理员手动指定声明。 在上述两种情况下,如何提供可以实际使用供应工具的身份(即管理员帐户)? 为此,我设想在应用程序安装期间,我需要用户进行身份验证并将该身份的应用程序声明设置为具有“管理”特权。这是一个好的实现吗? 从历史上讲(我现在指的是现有应用程序),该应用程序仅专门与Active Directory接口。处理此问题的方法是,有一个内置的管理员帐户(不与AD关联)允许管理员用户首次登录。在使用管理应用程序进行身份验证之后,该用户可以在AD中搜索用户/组并分别进行设置。管理员未配置的任何用户/组都将根本无法访问系统。我看不到这种范例适用于使用外部STS(例如Google等),因此我试图构想一个可以启用外部STS系统的体系结构。尽管不是必需的,但仍希望保持搜索STS的能力。实际上,所涉及的两个STS可能都是使用联合服务的Active Directory。 注意:这类似于此问题和此问题。     
已邀请:
将Windows Identity Foundation(WIF)与多个安全令牌服务(STS)一起使用时,是否可以在用户首次访问应用程序之前对其进行配置? 答案是肯定的,如果您可以识别这些用户(例如,他们的电子邮件) 在这种情况下,有两个STS,即Google(用于身份验证)和一个自定义应用程序(用于授权)。 这是经常使用的,但并非总是如此。如果您仅依赖Google,则可以在应用程序本身中简单地添加授权代码(例如\“ AuthorizationManager \”类等)。另一个STS的价值在于它可以成为多个身份(例如Google,LiveID,Yahoo!等)的代理,并且您可以进行一些与授权相关的转换。 由于身份是我的应用程序的外部所有者,因此我无法直接将声明分配给该身份(而且我也不想,因为它们是特定于应用程序的)。 为什么不?您可以定义以下规则: \“通过Google身份验证的任何人都是App BufferOverrun中的\”阅读器\“。您甚至可以说: \“ someone@gmail.com是BufferOverrun上的\'reader \',”,然后有人访问该应用。 您仍然可以使用原始方法(带外管理员帐户进行设置)。或者,您也可以在配置过程中“引导”配置,以定义将标识管理员用户的声明。 在http://claimsid.codeplex.com中查看示例“具有多个合作伙伴和ACS的联盟”(示例7)。 我们正是这样做的。     

要回复问题请先登录注册