C# 如何打开ADFS登录屏幕并捕获SAML

C# 如何打开ADFS登录屏幕并捕获SAML,c#,authentication,saml-2.0,adfs,C#,Authentication,Saml 2.0,Adfs,我正在尝试捕获ADFS登录给我的SAML令牌。我需要通过浏览ADFS登录页面捕获SAML,让用户登录,然后在登录成功时将SAML返回给应用程序。应用程序tehn调用WCF服务,并在报头中传递SAML令牌。我有一个类似的Url: https://adfs.mydomain/adfs/ls/IdpInitiatedSignOn.aspx?RedirectToIdentityProvider=http://adfs.mydomain/adfs/services/trust&loginToRP=

我正在尝试捕获ADFS登录给我的SAML令牌。我需要通过浏览ADFS登录页面捕获SAML,让用户登录,然后在登录成功时将SAML返回给应用程序。应用程序tehn调用WCF服务,并在报头中传递SAML令牌。我有一个类似的Url:

https://adfs.mydomain/adfs/ls/IdpInitiatedSignOn.aspx?RedirectToIdentityProvider=http://adfs.mydomain/adfs/services/trust&loginToRP=https://bcjbsj.com/client-api/api/saml
我需要让它在windows应用程序或控制台应用程序中正常工作。如果这是不可能的,我可以创建一个ASP.NET应用程序也进行测试。我已经通过了许多链接,但没有找到任何有帮助的


我可能遗漏了什么。对于身份验证来说,这是一个全新的概念。任何帮助或指针都会有帮助。

该端点用于被动登录(即通过浏览器)场景。对于Windows应用程序或控制台,WS-Trust是更合适的方法。简而言之,您的应用程序使用WS-Trust协议调用ADF以获取可用于访问WCF服务的令牌。这种WCF服务称为基于索赔的服务或索赔感知服务。这个问题有很多很好的链接:

使用一种称为JavascriptNotify的技术(偶尔)很容易做到这一点。基本思想是显示一个
WebBrowser
控件,您可以通过javascript扩展该控件,以便在身份验证完成后回调应用程序代码。您需要为应用程序提供一个SP-STS,该SP-STS显示主域发现页面和最终jsnotify页面,可以集中提供,也可以打包提供。UI的其余部分由受信任的STS处理。您可以选择使用Azure ACS来填补此角色

有关调用序列的外观,请参见或

要了解如何添加所需的
窗口。外部方法,请参阅。在WPF中,使用JST实现javascriptnotify



正如@Thuan所提到的,另一种选择是放弃WS-Federation被动身份验证,转而支持WS-Trust主动身份验证。这种方法的缺点是灵活性差得多,必须自己实现客户端UI。编写了同时实现WS-Trust和WS-Fed RP的应用程序后,我强烈推荐WS-Fed被动身份验证,即使对于桌面应用程序也是如此。

这真是太棒了:D我已经习惯了用于企业富客户端应用程序的方法,以至于我没有注意到这些“流”:)学到了一些新东西。