Windows Identity Foundation对站点部分的不同身份验证

时间:2011-06-03 12:32:48

标签: security wif

我是WIF的新手 - 如果我的问题看起来很基本,请提前抱歉...

我有一个WebSite让我们说localhost需要用户名/密码验证。访问// localhost / ForSecuredClientsOnly应该只需要 客户端证书才能访问该站点。
AFAIK客户端证书认证由IIS处理,如果我想使用STS,我应该如何处理这个问题?

我的想法:

  1. 使用1个STS,将IIS设置为接受证书(不要求)并在STS中读取证书并确定用户是否可以访问该资源。 我正在阅读http://msdn.microsoft.com/en-us/library/ff359105(v=PandP.10).aspxhttp://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx但是当我已经登录到// localhost并尝试访问// localhost / ForSecuredClientsOnly时,STS认为我是有效用户。
    我正在从ForSecuredClientsOnly返回新的Redirect结果(来自SignInRequestMessage的路径,因为用户不属于组X)但是领域总是:// localhost /(可能是它的预期行为)用户认证的原因......)
  2. 使用2个STS并将// localhost / ForSecuredClientsOnly移动到//securedClients.localhost。我真的不喜欢有2个STS的想法
  3. 拥有1个STS并创建指向同一STS的网站。
    我希望在STS中我会看到登录请求来自不同的领域,然后执行客户端证书身份验证的用户名/密码?
    我也不愿意使用该选项如果我需要在网站的每个部分创建需要不同身份验证的新网站,这并不理想。
  4. 问题:

    1. 我想让第一个想法工作,但我怎么能根据网站小节传递不同的领域,我看到我可以在HomeRealm上设置SignInRequestMessage属性,但我怎么能在以后阅读它STS? (如果我已登录到// localhost,则User.Identity.IsAuthenticated在STS中始终为true 我应该使用HomeRealm来区分网站部分吗?
    2. 如果您有想法在STS中阅读和验证客户证书的最佳方法,请告诉我。
      目前我认为我应该检查证书Thumbnail是否是我允许的证书之一 - 在数据库中的客户端证书缩略图上存储集合?
    3. 感谢您的所有投入。

1 个答案:

答案 0 :(得分:0)

我认为值得关注Codeplex的Starter STS社区项目。