创建 WCF 休息服务以接受 SAML 并对 Windows 用户进行身份验证
Posted
技术标签:
【中文标题】创建 WCF 休息服务以接受 SAML 并对 Windows 用户进行身份验证【英文标题】:Creating an WCF rest service to accept SAML and authenticate Windows users 【发布时间】:2018-01-18 22:43:02 【问题描述】:我必须创建一个 WCF 服务来接收带有 SAML 断言的请求。在内部,它需要获取 Windows 用户(调用者用户),然后模拟对应用程序的下一次调用。此应用仅支持 AD 用户。
我试图获得解决方案,但在大多数情况下,我使用 Azure 服务总线和 ACS 获得了解决方案,但就我而言,我没有。我的 SAML 直接传递给 WCF 服务(通过 Internet 公开),这需要验证令牌,获取 windows 用户,然后使用该用户的模拟继续下一步。
我的 ADFS 设置了一个中继方(我在云上的中间件已经用于对用户进行身份验证)。
我的问题是:
-
是否需要与 ADFS 和 WCF 服务建立信任关系?有没有
链接?
SAML 加密已全部加密。为了在 y WCF 解密这个,我需要在 ADFS 设置期间使用的相同证书吗?
我能否使用中间件在 WCF 服务和 ADFS 之间建立信任时使用的同一中继方?
任何提供解决方案的链接都会有所帮助。
流程图如图所示:
【问题讨论】:
【参考方案1】:您不能将 WCF 用于 Azure(除非 Azure 是指 Azure 中的 VM)。都是 Web API。
WCF 直接进入 ADFS。这是 WS-Fed 活动配置文件,例如this.
如果 SAML 令牌在 ADFS 中加密,则意味着 RP 拥有私钥。 ADFS(在 RP 加密选项卡中)只有公钥。
是的,您需要一个单独的 ADFS RP。
【讨论】:
您好 nzpcmad,Azure(中间件)是 Azure VM 中的一个中间件应用程序,它针对 ADFS 进行身份验证,然后向我的 WCF 发送 WebRequest 并接收响应。我觉得还不够清楚。 你确定是 WCF 吗? WCF 是 SOAP 而不是 REST。 Web API 是 REST。 我可以创建WCF休息服务codeproject.com/Articles/571813/… 来自您的链接“这不是 REST 服务。本文讨论的是 REST,但最终使用 WCF 创建了基于 HTTP 的服务。” 重点是 - 为什么需要 WCF?为什么不使用 Web API?这受到 ADFS 4.0 和 Azure 的支持,并且更容易实现。以上是关于创建 WCF 休息服务以接受 SAML 并对 Windows 用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
为啥 WCF 休息服务(不是使用 WCF 休息服务模板创建的)不起作用?