在Web App和API之间设置Kerberos 2跃点身份验证

时间:2018-08-03 12:47:21

标签: c# api iis kerberos-delegation

我正在使用Windows Server 2018,IIS 10和Web应用程序,目标是.Net Framework 4.5.1。我的API是使用.Net Core 2.1和Visual Studio 2017构建的。网站和API均使用Windows身份验证。

我使用了此人的教程来尝试设置Kerberos两跳身份验证(https://blogs.msdn.microsoft.com/surajdixit/2018/02/07/kerberos-configuration-manager-for-internet-information-services-server/)。

我已经尝试过的步骤

  1. 将应用程序池设置为在自定义域帐户下运行。

  2. 向指向该域中网站DNS地址的域帐户添加了SPN

  3. 将应用程序池切换为经典模式

  4. 为网站启用Windows身份验证和模拟。

  5. 已经由系统管理员授予自定义域帐户委派权限。

    我当前面临的问题是,现在我对IIS中的应用程序池和网站进行了所有这些修改,当我尝试连接到该网站时,它会提示您输入凭据,这不应该发生通过我的Windows域帐户对我进行身份验证,当我输入凭据时,它会再次刷新并提示输入凭据。在本地运行时,一切正常,并且Web应用程序中的HttpClient成功调用了该API。

    我在此上花费了数小时,希望能对您有所帮助。我没主意了。

1 个答案:

答案 0 :(得分:0)

因此,在尝试了多个演练并与其他开发人员合作之后,我发现问题出在同一服务器上,同时是应用程序,Web应用程序和api。一旦将api移到它自己的专用服务器上,我就不需要模拟,并且能够以域帐户身份运行时仅从应用程序池中加载用户配置文件凭据。 HttpClient和WebClient对象都成功,然后通过设置UseDefaultCredentials = true来向api请求。

如果有人遇到此问题,请尝试将您的api托管在其他服务器上。我花了几天的时间来思考这是我在配置事情上做错了,最后,这正是我托管应用程序的地方。

也许有一种方法可以使它在同一台服务器上成功工作,但是我无法使其工作。也许其他更有经验的人可以添加到此帖子中,以帮助说明如何在同一服务器上执行此操作。祝大家编码愉快。