使用WindowsIdentity / WindowsPrincipal获取WS-Federation的SAML令牌

时间:2018-09-21 13:36:31

标签: c# kerberos adfs wif ws-federation

是否可以使用在公司域上运行的C#应用​​程序内部的本机WindowsIdentity / WindowsPrincipal来向域的ADFS服务器请求SAML令牌,以便C#应用程序随后可以对WS-联合身份验证已在与ADFS服务器联合的服务提供者中调用?

似乎我们将使用WIF与ADFS服务器联系以获得令牌。有没有办法提供WIF的Kerberos票证,而不是使用用户名/密码?

查看WindowsIdentity.GetCurrent()我可以看到用户使用kerberos登录,但是没有看到如何配置对ADFS的WIF调用以使用kerberos自动获取没有设置用户名/密码的SAML令牌凭证。

1 个答案:

答案 0 :(得分:0)

https://blogs.msdn.microsoft.com/alikl/2011/09/30/how-to-use-ad-fs-endpoints-when-developing-claims-aware-wcf-services-using-wif/有帮助吗?

您应该确保已启用了可以通过启用kerberos进行Windows集成身份验证的终结点。类似于/ adfs / services / trust / 2005 / windowstransport或/ adfs / services / trust / 13 / windowstransport。您可以通过解析/ adfs / services / trust / mex端点来进行检查。有时,某些端点会被系统管理员禁用。

使用kerberos票证作为端点的凭据,意味着您的应用程序需要在corpnet上运行,并且可以访问域控制器,以便它可以获取AD FS的票证。如果不需要在公司内部使用该应用程序,则可能适合您。否则,您需要考虑该应用程序在公司内部和外部的行为/身份验证。

看看https://www.microsoft.com/en-gb/download/details.aspx?id=4451的示例,但它们需要根据您打算使用的WIF版本进行修改,如https://docs.microsoft.com/en-us/dotnet/framework/security/guidelines-for-migrating-an-application-built-using-wif-3-5-to-wif-4-5

所述

最后,您应该考虑在您的方案中是否可以使用OpenID Connect和OAuth2.0代替WS-Federation / WS-Trust。如果是,则应查看https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-scenarios-for-developers

上的信息。