我希望有人能够提供帮助,要么帮助我找出我遗漏的内容,要么确认是否确实可能。
背景
我们有一个新的 Azure VM,其中安装了 Windows 2019 Datacenter 和 IIS。
- 该计算机已加入 Azure AD。
- 我可以使用我的 Azure AD 帐户通过 RDP 登录到 VM。
- 我们没有本地广告。
- 我们没有 AAD 域服务。
- 仅可通过 VPN 连接访问 VM。
- 在 IIS 上,默认网站已切换为仅集成 Windows 身份验证。
VM 具有指向其 IP 地址的 DNS“A”记录。例如catchyname.ourdomain.com
解析到 VM。这在我们的内部 Azure 网络的私有 Azure DNS 和我们的外部 DNS 提供商中均有设置。
问题
直接登录到 VM 时,我可以通过浏览http://machinename/
或通过访问默认的 IIS 欢迎页面,http://localhost
并且可以正确提供。
如果我尝试通过以下方式导航到同一页面http://127.0.0.1, 通过http://catchyname.ourdomain.com或者通过机器的 IP 地址,要求用户输入用户名和密码。有趣的是,质询框识别了我的 AD 用户(因为我用这个用户登录了虚拟机)并要求输入随附的 PIN,但未能接受任何输入,并以 401.2.5 错误和以下消息进行响应:
由于身份验证标头无效,您无权查看此页面。
当我检查日志时,对于成功的请求,我可以看到 IIS 日志中的源 IP 地址显示为::1
如果我使用正确的 URL 即依赖于集成 Windows 身份验证的盒子上的另一个 Web 应用程序(SSRS2017)登录http:/machinename/Reports/browse
,它也会让我进入并显示我已正确登录的用户AzureAD\MyUserName
如果我将其添加machinename
到我的C:\Windows\System32\drivers\etc\hosts
文件并尝试通过远程浏览它,http:/machinename/
它也会失败。
问题
是否可以为 IIS 中通过 DNS 别名解析的站点启用 AAD 身份验证,该别名的执行方式与我通过计算机名称或通过本地主机导航时相同?如果可以,我需要采取哪些步骤?
如果我能解决这个问题,我的下一步就是看看我们是否可以使用此身份验证方法为也加入了 Azure AD 的 Windows 桌面启用这些网站,以便普通用户可以浏览 VM 上的网站并成功访问它们。
我尝试过的事情
在过去的 24 小时里,我在 Google 上进行了大量搜索,并查阅了建议通过注册表更改来禁用本地 IIS 网站的环回检查的文章,我还阅读了有关为 .NET 应用程序配置联合身份验证的文章,但感觉我现在走得太深了。
我一直在想,如果我浏览http:\\localhost\
一切似乎都有效,我不知道为什么这会有所不同http:\\dns-alias\
有人可以帮忙吗?
谢谢!
答案1
你正在做的事情不会起作用,下面是一些替代方案:
您已启用 Windows 集成身份验证,这实际上依赖于域环境才能正常工作,但您没有:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/integrated-windows-authentication
IIS 不理解 Azure AD 帐户身份验证,IIS 根本不会与 Azure AD 进行身份验证,因为它根本缺少该功能,无论您的 DNS 记录是什么或它指向哪里:https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/
您下一步可能的选择是:
- 要求您的开发团队整合应用程序代码中的 Azure AD 身份验证(如果您拥有该应用程序并有权访问代码,如果您不想投入精力更改代码,这不是我的首选方法):https://docs.microsoft.com/en-us/aspnet/visual-studio/overview/2012/windows-azure-authentication
- 使用 Azure AD 在线发布您的应用程序,无需使用 VPN,只需使用 Microsoft 提供的简单代理服务即可Azure AD 应用程序代理,您将其安装在 IIS 服务器上,在线注册应用程序并进行一些配置,就这样,您的应用程序可以在任何地方安全地访问。最好的部分是,您可以使用 Azure AD 身份验证甚至 Azure AD 条件访问策略之类的东西。
这里有很多内容可读,祝您学习愉快:
https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/application-proxy https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview