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

时间:2017-08-09 14:14:38

标签: c# authentication saml-2.0 adfs

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

array(1) {
  'array' =>
  array(3) {
    [0] => int(1)
    [1] => int(2)
    [2] => string(9) "some-text"
  }
}

我需要在Windows应用程序或控制台应用程序中使用它。如果这不可能,我也可以创建一个ASP .NET应用程序进行测试。我已经通过许多链接,但无法找到任何有用的东西。

我可能在这里遗漏了一些东西。身份验证的新手。任何帮助或指示都会有所帮助。

2 个答案:

答案 0 :(得分:1)

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

有关呼叫序列的信息,请参阅Authenticating Users from Passive IPs in Rich Client Apps – via ACSAccess Control Service: Transitioning between Active and Passive Scenarios

Call sequence showing Azure ACS being used to authenticate from a desktop client

要了解如何添加所需的window.external方法,请参阅Invoke C# code from JavaScript in a Document in a WebBrowser。 WPF中的Thinktecture has an example client使用JST实现javascriptnotify。

正如@Thuan所提到的,另一种选择是放弃WS-Federation被动身份验证,转而支持WS-Trust主动身份验证。这种方法的缺点是它的灵活性要低得多,您必须自己实现客户端UI。编写了同时实现WS-Trust和WS-Fed RP的应用程序,我强烈建议甚至对桌面应用程序进行WS-Fed被动身份验证。

答案 1 :(得分:0)

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

相关问题