【发布时间】:2011-06-03 12:32:47
【问题描述】:
我是 WIF 新手 - 如果我的问题似乎非常基本,请提前抱歉...
我有一个需要用户名/密码身份验证的 1 个网站,比如说 localhost。访问 //localhost/ForSecuredClientsOnly 应该需要 only 客户端证书才能访问该站点。
AFAIK 客户端证书认证由 IIS 处理,如果我想使用 STS,我应该如何处理这个问题?
我的想法:
- 使用 1 个 STS,将 IIS 设置为接受证书(不需要)并读取 STS 中的证书并确定用户是否可以访问该资源。
我正在阅读http://msdn.microsoft.com/en-us/library/ff359105(v=PandP.10).aspx 和
http://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx 但是当我已经登录到 //localhost 并尝试访问 //localhost/ForSecuredClientsOnly STS 认为我是一个有效用户。
我正在从 ForSecuredClientsOnly 返回新的重定向结果(来自SignInRequestMessage的路径,因为用户不属于X组),但领域始终是://localhost/(可能这是用户的预期行为和原因已通过身份验证...)
- 使用 2 个 STS 并将 //localhost/ForSecuredClientsOnly 移动到 //securedClients.localhost。不过,我不太喜欢拥有 2 个 STS 的想法
- 拥有 1 个 STS 并创建到指向相同 STS 的网站。
我希望然后在 STS 中我会看到登录请求来自不同的领域,然后执行客户端证书身份验证的用户名/密码?
我也不想使用该选项,因为它不是如果我需要为需要不同身份验证的网站的每个部分创建新网站,这是理想的选择。
问题:
- 我想让想法 1 工作,但是如何根据站点小节传递不同的领域,我看到我可以在
SignInRequestMessage上设置HomeRealm属性,但是我以后如何在 STS 中阅读它? (如果我已经登录到 //localhost,User.Identity.IsAuthenticated在 STS 中始终是true)。
我应该使用HomeRealm来区分站点部分吗? - 如果您知道在 STS 中读取和验证客户端证书的最佳方法是什么,请告诉我。
目前我在考虑是否应该检查证书缩略图是否是我允许的证书之一 - 将集合存储在数据库中的客户端证书缩略图上?
感谢您的所有意见。
【问题讨论】: