我正在尝试捕获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应用程序进行测试。我已经通过许多链接,但无法找到任何有用的东西。
我可能在这里遗漏了一些东西。身份验证的新手。任何帮助或指示都会有所帮助。
答案 0 :(得分:1)
这很容易使用一种名为JavascriptNotify的技术(偶尔)来完成。基本思想是显示一个WebBrowser
控件,通过javascript扩展,以便在身份验证完成后允许回调您的应用程序代码。您需要集中提供或与您的应用程序一起提供SP-STS,该SP-STS显示主域发现页面和最终的jsnotify页面。 UI的其余部分由受信任的STS处理。您可以选择使用Azure ACS来填充此角色。
有关呼叫序列的信息,请参阅Authenticating Users from Passive IPs in Rich Client Apps – via ACS或Access Control Service: Transitioning between Active and Passive Scenarios。
要了解如何添加所需的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