2017-09-04 24 views
1

我正在使用VS1017将Web应用程序从VS2015中的aspnetcore1.0迁移到aspnetcore2.0。aspnetcore2.0 azure web应用部署启用组织身份验证

我使用的是湛蓝的Active Directory和智威汤逊承载认证,以保护通过angularjs客户消耗我的休息端点在同一个项目中

一切工作正常,而在我的机器上调试,但是当我将其部署到Azure我在提出请求时发生此错误

值不能为空。参数名:clientSecret

在蔚蓝的门户网站使用捻有用于azuread没有设置环境变量,也不是一个与生态环境变量客户端秘密,因为他们曾经是在netcore1.0情况下,以一看。在VS2015中,我在发布应用程序时获得了“启用组织身份验证”复选框,但在VS2017中不是这种情况,我猜测它与在部署过程中为azure创建的env变量有关。

我的问题是,如何从VS2017部署Azure的aspnetcoreapp2.0进行此类型认证,以及如何在生产环境中管理aad auth的应用设置和客户机密?

利布斯在aspnetcore2.0 VS1017项目中使用:

"Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.1.0-preview1-26771" 
"Microsoft.Azure.ActiveDirectory.GraphClient" Version="2.1.1" 
"Microsoft.IdentityModel.Clients.ActiveDirectory" Version="3.16.0" 

aspnetcore1.0 VS105环境变量:

enter image description here

这些都是从VS2017

部署

回答

1

失踪时在ASP .net Core 1.0在开发Web应用程序时启用组织认证,Visual Studio将在中创建Azure AD配置appsettings.json

"Authentication": { 
    "AzureAd": { 
     "AADInstance": "https://login.microsoftonline.com/", 
     "CallbackPath": "/signin-oidc", 
     "ClientId": "xxxxxxxxxxxxxxxxxxx", 
     "Domain": "testnanyu.onmicrosoft.com", 
     "TenantId": "xxxxxxxxxxxxxxxxxxxxxxxx" 
    } 
    }, 

那么,如果覆盖在Azure的应用服务嵌套键(通过环境变量),你可以使用完整的路径Authentication:AzureAd:ClientId作为名称定义一个变量。

但在Asp.net核2.0,Visual Studio将创建天青AD配置等:

"AzureAd": { 
    "Instance": "https://login.microsoftonline.com/", 
    "Domain": "testnanyu.onmicrosoft.com", 
    "TenantId": "xxxxxxxxxxxxxxxxxxxxxxxxx", 
    "ClientId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "CallbackPath": "/signin-oidc" 
    }, 

的结构被改变。因此,如果在Azure App Services中覆盖嵌套的键(通过环境变量),则可以在门户中定义一个变量,如AzureAd:ClientId。用kudu,它显示APPSETTING_AzureAd:ClientId作为环境变量。

+0

按照您的建议覆盖Azure应用服务中的嵌套关​​键字,并且工作得很好,谢谢。无论如何,它感觉像是退后一步,它不会像以前的aspnetcore版本那样在自Visual Studio部署期间自动完成,可能会在更新版本中进行更新。 –

+0

事实上,他们将配置代码从startup.cs中移出来,让我有点困惑,因为我认为这个问题的原因是我在这件事上缺少了一些东西。对于任何感兴趣的人来说,这里有一篇关于aspnetcore2.0的结构性变化的好文章https://www.stevejgordon.co.uk/getting-started-with-asp-net-core-2-0-preview-1 –