有没有一种方法可以使用公司域上运行的C#应用程序内部的本机WindowsIdentity/WindowsPrincipal,以便能够从域的ADFS服务器请求SAML令牌,以便C#应用程序可以在已经与ADFS服务器联合的服务提供者中进行后续调用?
似乎我们要使用WIF来联系ADFS服务器以获取令牌。有没有办法向WIF提供Kerberos票证,而不是使用用户名/密码?
查看WindowsIdentity.GetCurrent(),我可以看到用户是使用kerberos登录的,但是没有看到如何配置对ADFS的WIF调用,以使用kerberos在没有用户名/密码凭据集的情况下自动获取SAML令牌。
发布于 2018-09-22 23:49:23
您应该确保启用了可以通过启用kerberos执行windows集成身份验证的终结点。您可以通过解析/adfs/services/trust/mex端点来检查这一点。有时,其中一些端点会被sysadmin禁用。
使用kerberos票证作为终结点的凭据意味着你的应用程序需要在具有域控制器访问权限的公司网上运行,以便它可以获得AD FS的票证。如果不需要在corpnet之外使用应用程序,这对您来说可能是可以的。否则,您需要考虑应用程序在公司网内部和外部的行为/身份验证。
可以查看https://www.microsoft.com/en-gb/download/details.aspx?id=4451中的示例,但如果您计划使用https://docs.microsoft.com/en-us/dotnet/framework/security/guidelines-for-migrating-an-application-built-using-wif-3-5-to-wif-4-5中列出的WIF版本,则需要对其进行修改
最后,您应该考虑是否可以在您的场景中使用OpenID连接和OAuth2.0来代替WS-联合/WS-Trust。如果是,您应该在https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-scenarios-for-developers上查看相关信息
https://stackoverflow.com/questions/52444952
复制相似问题