c# - WIF 身份验证方案。 STS实现问题

标签 c# wcf authentication wif

我们正在考虑使用 WIF 对我们的用户进行身份验证,因此我已经开始收集一些有关如何正确执行此操作的信息。主要是我们应该如何创建STS。我很难找到有关我们的场景的一些信息,在我们的场景中,我们有一个将被内部和外部客户使用的“主要”服务。

内部客户端将使用 TCP 连接到服务。我们员工使用的桌面客户端应使用其域凭据 (Active Directory) 对服务进行身份验证。除此之外,我们还有少量应用程序使用该服务进行数据处理。我们想为这些应用程序颁发证书。然后,他们将使用该证书通过 STS 进行身份验证,并返回一个包含该应用程序声明的 token 。这可能吗?

外部客户端将通过 HTTP 连接,使用用户名/密码(Web 客户端)或通过与上述类似的证书进行身份验证。

这是一个有效的场景吗?你将如何在 WIF 中实现它?你能给我指出一些你认为会有帮助的文章吗?我可以通过拥有一个 STS (WCF) 来解决这个问题,还是我需要多个?单个 STS 是否可以处理多种类型的凭据(AD/用户名/证书)?

提前致谢。任何帮助将不胜感激。

最佳答案

是的,这可以通过 WCF 和 WIF 轻松实现。您只需要一个具有三个 WCF 端点的 STS 实现或服务。一个用于 Windows 身份验证的 net.tcp 端点,一个用于使用证书进行身份验证的端点(这可以是使用 X509 客户端凭据的消息安全性或使用 X509 凭据的 Http 传输安全性),以及另一个用于用户名和密码的端点。您可能想看看 Dominick Baier 的 STS 初学者工具包,我认为他已经在那个项目中提供了一个实现。

这是一个通过以下两个端点公开 STS 服务的问题,

如果您使用的是 WIF,则不需要 ADFS。 ADFS 是一个与 AD 集成的联合解决方案,并在其上安装了一个 STS。您始终可以实现自己的 STS 并在绑定(bind)配置中为 Windows 身份验证公开一个额外的端点

谢谢 巴勃罗。

关于c# - WIF 身份验证方案。 STS实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617420/

相关文章:

c# - 透明表格不会总是保持在最前面

c# - Web 服务抛出的自定义异常未被客户端视为相同类型(使用共享程序集)

php - 阅读 Robin Nixon RE : Sanitizing Input PHP 的 Learning PHP, MySQL & JavaScript 时的问题

用于获取受 DES/kerberos 保护的 URL 的 Python 脚本

c# - System.Timers.Timer 随着每次迭代而衰减

c# - 使用 Unity 的 SimpleJSON 检索不带引号的字符串

C# 将构造函数参数绑定(bind)到实例变量

wcf - 在 WCF 中命名通用 DataContract

wcf - 访问 Azure RoleEnvironment 时为 "Role discovery data is unavailable"

java - 检查 Struts 2 Web 应用程序中的 session 值