首页 > 解决方案 > 带有 OpenId Connect 的 Azure 流量管理器

问题描述

我有一个使用 OpenId-Connect 强制执行身份验证的 Azure 云服务 (abc.cloudapp.net)。最近,出于维护原因,我决定将它放在流量管理器 (abc.trafficmanager.net) 后面。在阅读了交通管理器在 Microsoft 文档上的工作原理后,我的理解(根据下面的流程图)是,当有人点击 TM 时,它会简单地为我的云服务进行 DNS 查找并返回一个 302,其位置为abc.cloudapp.net(或 IP 可能),然后客户端遵循重定向。文档清楚地说明了这一点:

要理解的最重要一点是流量管理器在 DNS 级别工作。流量管理器使用 DNS 根据流量路由方法的规则将客户端定向到特定的服务端点。客户端直接连接到选定的端点。流量管理器不是代理或网关。流量管理器看不到客户端和服务之间传递的流量。

在此处输入图像描述

但是我(通过 Fiddler/Chrome 开发工具)看到的是 TM 似乎正在命中实际的云服务端点,从而导致身份验证问题,因为我的云服务中的重定向 URL 与 TM URL 不匹配等等。

TM应该这样做吗?还是我在这里遗漏了一些重要的东西。下面是一个相关的线程。

RequireNonce 为“真”(默认),但在 Azure 流量管理器 OpenIdConnectAuthentication 中,validationContext.Nonce 为空

标签: azureopenid-connectazure-traffic-manager

解决方案


流量管理器在 DNS 级别运行,没有 302,因为它不使用 HTTP 运行。当客户端对您的域名进行 DNS 查询时,流量管理器将发回 DNS 回复,表明该服务在那边。

然后,客户端将使用流量管理器提供的 IP 地址连接到流量管理器 URL/您的自定义域。

所以用户看到的 URL 不会改变,流量管理器只是告诉他们服务在哪里。


推荐阅读