azure - 带有 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 为空
解决方案
流量管理器在 DNS 级别运行,没有 302,因为它不使用 HTTP 运行。当客户端对您的域名进行 DNS 查询时,流量管理器将发回 DNS 回复,表明该服务在那边。
然后,客户端将使用流量管理器提供的 IP 地址连接到流量管理器 URL/您的自定义域。
所以用户看到的 URL 不会改变,流量管理器只是告诉他们服务在哪里。
推荐阅读
- docker - 有没有办法在 docker swarm 中运行备用服务?
- php - Wordpress:循环内的 preg_replace 仅偶尔有效
- c++ - 在构造函数中被删除后继续执行
- javascript - Prism.js - 如何获得在 / 使用 prism 的链接?
- java - 使用java将pairRDD转换为spark中的数据集
- indexeddb - 我们如何更新 IndexedDB 中的键路径值
- reactjs - 我正在寻找如何在材料 ui 的表格组件上绘制垂直线
- google-bigquery - 在 BigQuery 中将字符串转换为日期的最佳方法是什么?
- python - 查找特定列的平均值并保留所有具有特定平均值的行
- ansible - Ansible 成为用户无法运行命令