2011-06-16 30 views
4

article让我想到了在通过FedUtil将它们与ADFS联合时,未启用声明的ASP.NET应用程序会发生什么情况。未启用声明的ASP.NET应用程序和ADFS v2.0

该文章指出,实现此目标的关键是打开声明到Windows令牌服务(C2WTS)。此服务有效地将ADFS令牌转换为Windows令牌。

因此,我使用Windows身份验证构建了一个快速ASP.NET应用程序,运行FedUtil,并且可以使用ADFS Windows身份验证或StarterSTS与ADFS进行身份验证。问题是C2WTS没有运行,所以它工作,虽然我预料它不会。

很明显,您无法访问应用程序内部的声明对象,但它没有问题。

但是,这会产生问题。由于您无法访问FederatedPassiveSignOut等,您如何从ADFS注销?

是否将令牌发送给应用程序?

它是否忽略了它们而没有抛出任何异常?

C2WTS是否需要成为图片的一部分?

我错过了什么吗?

回答

2

询问在其他论坛上,史蒂夫Syfuhs回答:

FedUtil修改web.config文件,以便验证方法是“无”,并插入一些处理程序在web请求很早就看到,如果一个会话存在,如果没有通过重定向到指定的STS来创建会话,则STS执行该操作,并将令牌返回给该站点。另一个处理程序接收该标记并基于该标记构建一个IClaimsPrincipal对象。 Thread.CurrentPrincipal对象设置为IClaimsPrincipal。因此,Windows身份验证不在Web应用程序中发生(但它位于ADFS中)。

OWA(应该是所有构建良好的Web应用程序)都会查看Thread.CurrentPrincipal以查找用户的身份。只要STS提供的值与OWA预期的值相匹配,OWA就很高兴。某些声明可通过Thread.CurrentPrincipal获得,例如Name声明,这是OWA用来获取用户名的内容。 C2WTS的创建是充当理解声明的应用程序与不通过创建Windows令牌并将其附加到用户会话的应用程序之间的垫片。 OWA需要调用Active Directory来获取某些信息,并通过Windows身份验证完成,因此需要Windows令牌。

在这种情况下,无法退出ADFS,但仍可以通过删除Cookie来终止OWA或自定义应用程序中的会话。在自定义Web应用程序中,您可以链接到ADFS注销页面,该页面为https://adfsserver/adfs/ls/?wa=wsignout1.0,并且该注册页面将退出ADFS。

更新:

只是为了记录为他人:

这种方法适用于外包认证的条件,但存在三个问题:

  • 有权利要求对象的访问权限。
  • 你必须推出自己的退出。
  • 联邦元数据有一些“不同”。您无法通过URL将应用程序作为RP添加到ADFS中。您必须使用导入文件机制。这意味着无法更新元数据,因此如果RP有任何更改,您必须删除并重新配置。
相关问题