是否可以使用在公司域上运行的C#应用程序内部的本机WindowsIdentity / WindowsPrincipal来向域的ADFS服务器请求SAML令牌,以便C#应用程序随后可以对WS-联合身份验证已在与ADFS服务器联合的服务提供者中调用?
似乎我们将使用WIF与ADFS服务器联系以获得令牌。有没有办法提供WIF的Kerberos票证,而不是使用用户名/密码?
查看WindowsIdentity.GetCurrent()我可以看到用户使用kerberos登录,但是没有看到如何配置对ADFS的WIF调用以使用kerberos自动获取没有设置用户名/密码的SAML令牌凭证。
答案 0 :(得分:0)
您应该确保已启用了可以通过启用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
上的信息。