通过代理服务器连接 Azure Sphere
可以使用 Azure Sphere SDK 应用程序库 (Applibs) 或 CLI 将 Azure Sphere 设备配置为通过代理服务器连接到 Internet。 启用此功能后,所有设备流量都会流经代理。 可以将设备配置为标识要使用的代理服务器、服务器类型和身份验证方法。
目前仅支持 HTTP 代理。
身份验证方法
支持以下身份验证方法:
- 基本:提示用户输入用户名和密码以对连接进行身份验证。
- 匿名:允许用户匿名连接,以便在使用代理服务器连接时不需要用户名和密码。
使用 CLI 的代理配置
以下命令管理用于网络连接的代理地址。 有关详细信息,请参阅 az sphere device network proxy。
操作 | 描述 |
---|---|
proxy apply | 在连接的设备上配置网络代理。 |
代理删除 | 删除附加设备上的代理连接。 |
proxy show | 显示附加设备上的代理连接。 |
使用 Applibs 的代理配置
若要设置代理配置,应用程序必须使用 Applibs 网络 API,其中包括对获取和设置代理配置属性的支持。
在应用程序中包括此头文件:
#include <applibs/networking.h>
如果在应用程序中使用 cURL并通过代理服务器连接到 Internet,则还必须包含此头文件:
#include <applibs/networking_curl.h>
有关使用cURL的详细信息,请参阅连接到 Web 服务。
代理配置支持的 Applibs
支持以下 AppLib:
- Networking_Curl_SetDefaultProxy
- Networking_Proxy_Create
- Networking_Proxy_Destroy
- Networking_Proxy_Apply
- Networking_Proxy_Get
- Networking_Proxy_SetProxyOptions
- Networking_Proxy_SetProxyAddress
- Networking_Proxy_SetAnonymousAuthentication
- Networking_Proxy_SetBasicAuthentication
- Networking_Proxy_SetProxyNoProxyAddresses
- Networking_Proxy_GetProxyOptions
- Networking_Proxy_GetProxyAddress
- Networking_Proxy_GetProxyPort
- Networking_Proxy_GetProxyType
- Networking_Proxy_GetProxyUsername
- Networking_Proxy_GetProxyPassword
- Networking_Proxy_GetAuthType
- Networking_Proxy_GetNoProxyAddresses
- Networking_Proxy_GetProxyStatus
- Networking_ProxyConfig
- Networking_ProxyOptions
- Networking_ProxyType
- Networking_ProxyAuthType
- Networking_ProxyStatus
应用程序清单要求
应用程序清单必须包含 NetworkConfig 或 ReadNetworkProxyConfig 功能。 该功能确定应用程序对代理设置的访问程度。
NetworkConfig 功能授予对所有网络配置设置的完全访问权限。 它允许应用程序配置、检索以及启用或禁用代理设置。
"Capabilities": {
"NetworkConfig": true
}
ReadNetworkProxyConfig 功能仅允许应用程序检索代理设置。 此功能用于拒绝对网络设置进行常规访问但需要代理配置信息的应用程序。
"Capabilities": {
"ReadNetworkProxyConfig": true
}
使用 MQTT 连接到Azure IoT 中心
Azure IoT 应用程序使用基于 TCP/IP 的 MQTT 连接到 Azure IoT 中心。 必须将应用程序配置为使用基于 WebSocket 的 MQTT,以便通过代理正确重定向流量。
可以将应用程序配置为直接与IoT 中心通信,或使用 Azure 设备预配服务 (DPS) :
若要将应用程序配置为直接与 IoT 中心通信,请使用 READMEStartWithIoTHub.md 示例中的代理示例代码,并按照 直接连接到 AzureIoT 中心中所述对其进行修改。
若要将应用程序配置为使用 Azure DPS,请使用 READMEAddDPS 或 READMEStartWithIoTCentral 示例中的代理示例代码,并按照通过Azure IoT 中心设备预配服务进行连接中所述对其进行修改。
有关添加代理支持的详细信息,请参阅 READMEAddWebProxy.md。
样品
代理代码片段演示了以下内容:
- 配置代理设置代码片段演示如何在 Azure Sphere 设备上配置代理设置。
- 获取代理设置代码片段演示如何检索 Azure Sphere 设备上的代理设置。
- 启用/禁用配置的代理代码片段演示如何在 Azure Sphere 设备上启用/禁用已配置的代理。
HTTPS 示例演示如何使用 HTTPS_Curl_Easy 和 HTTPS_Curl_Multi API 通过 HTTPS 提取内容。 默认情况下,他们将cURL句柄配置为使用代理。
AzureIoT 示例包含有关向示例添加 Web 代理支持的说明和代码。