为没有Azure AD应用程序的WebSiteManagementClient创建SubscriptionCloudCredentials

时间:2017-01-27 15:58:25

标签: azure azure-web-sites azure-sdk-.net azure-management-api

我正在寻找一个简单的验证解决方案并使用WebSiteManagementClient。我见过的examples使用Azure AD应用程序来创建所需的SubscriptionCloudCredentials。我更喜欢在不使用AD应用程序的情况下创建SubscriptionCloudCredentials

如果可能的话,我更愿意只使用发布配置文件设置XML中的Web Deploy un / pw凭证(因为我已经有使用这些凭据与基本身份验证的kudu api进行交互的代码)

我找到this可能的解决方案而是使用management certificatemore info)。但同样,如果可能的话,我宁愿只使用Web部署un / pw。

(我知道管理证书处于订阅级别,Web部署un / pw处于App Service / WebSite实例级别。我只是说明我想要的解决方案的样子。)

2 个答案:

答案 0 :(得分:1)

管理证书允许您仅使用经典部署(Azure服务管理)模型进行身份验证,而不是Azure资源管理部署模型。

如果您的网络应用程序不是使用经典部署模型创建的,那么您需要TokenCloudCredential而不是CertificateCloudCredential

从技术上讲,您仍然可以创建Certificate-based SubscriptionCloudCredentials,但它只适用于使用经典部署模型创建的Azure Web应用。

答案 1 :(得分:0)

  

我更愿意使用Web Deploy un / pw。

如果要在Web Deploy期间将证书上载到Azure WebApp,那么我们可以使用ARM模板,更多详细信息,请参阅document

{
    "name": "[parameters('certificateName')]",
    "apiVersion": "2014-04-01",
    "type": "Microsoft.Web/certificates",
    "location": "[resourceGroup().location]",
    "properties": {
        "pfxBlob": "pfx base64 blob",
        "password": "some pass"
    }
}

关于如何使用证书创建subscriptionCloudCredentials以及如何创建自定义证书,我做了一个演示。更多详情请参阅另一个SO thread

  

如果我们尝试在Azure上运行该项目。请参阅文档Using Certificates in Azure Websites Applications。添加名为WEBSITE_LOAD_CERTIFICATES且其值设置为证书指纹的应用设置将使您的Web应用程序可以访问该设置

因此我们还需要在ARM模板中添加AppSetting,更多详细信息请参考document

{
   "name": "appsettings",
    "type": "config",
    "apiVersion": "2015-08-01",
    "dependsOn": [
        "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
    ],
    "tags": {
        "displayName": "WebAppSettings"
    },
    "properties": {
        " WEBSITE_LOAD_CERTIFICATES ": "thumbprint "
    }