以编程方式使用 Azure AD 对应用程序代理进行身份验证

Programmatically authenticate with Azure AD for Application Proxy

我有一个带有 REST 端点的 on-premise 托管 WCF 服务,该服务仅在 IIS 中配置为匿名身份验证。我在服务器上安装并配置了 Azure App 代理连接器。 I am able to contact the service fine with Pass-through authentication, but struggling to authenticate from a console app when Azure AD is chosen as security mechanism.我知道我可以在 Azure 中使用 pass-through 并在 IIS 中打开例如 windows 身份验证,但不幸的是,在这种情况下这不是一个选项。

使用浏览器,我可以很好地访问应用程序,甚至不需要输入凭据,我们的 on-premise AD 已连接并与 Azure AD 同步。

我遵循了这个 walk-through 尽管它与应用程序代理无关,并且重用部分代码我能够为我的应用程序获取访问令牌,但是当我 运行 http 请求时授权header 我没有得到服务运行的结果。

使用 Fiddler 我可以注意到以下几点:

  1. 我收到 http 302(已找到)。我可以在请求中看到我的授权 header,作为响应,我得到一个 cookie AzureAppProxyAnalyticCookie
  2. 之后是 http 200 到 login.microsoftonline.com

我为上面提供的示例 link 工作正常,所以很明显我做错了什么。为什么授权 header 不被接受,为什么我被重定向到登录页面?

提前致谢

这正在为另一项服务工作,不知道第一个服务出了什么问题,但怀疑本地服务器上的 DNS 有问题。不会在这上面花更多时间,重点是我根本不应该经历重定向,尽管浏览器处理了它并设法让我通过了身份验证。