2017-02-20 14 views
0

Хотя локально мой веб-сайт ASP.NET Core работал очень хорошо, во время публикации на Azure я столкнулся с внутренней ошибкой сервера («Произошла ошибка при запуске приложение."). I found out more details on the exact error, пропустив .CaptureStartupErrors(true).UseSetting("detailedErrors","true") до WebHostBuilder в Program.cs.Внешняя аутентификация не работает при настройке в настройках «Аутентификация/Авторизация» портала Azure

System.ArgumentException: The 'ClientId' option must be provided. 

Это относится к параметрам аутентификации Google как часть Configure() в Startup.cs.

app.UseGoogleAuthentication(new GoogleOptions() 
{ 
    ClientId = Configuration[ "Authentication:Google:ClientId" ], 
    ClientSecret = Configuration[ "Authentication:Google:ClientSecret" ] 
}); 

В процессе разработки, они успешно загружены с помощью пользовательских секретов в Startup():

if (env.IsDevelopment()) 
{ 
    builder.AddUserSecrets<Startup>(); 
} 

According to the documentation, ClientId и ClientSecret должны быть указаны в Azure портала в разделе «Проверка подлинности/авторизации» в настройках веб-приложения , Несмотря на то, что я изначально указывал там, исключение сохраняется.

Я что-то упустил?

ответ

0

Настройки «Аутентификация/Авторизация» - это, по-видимому, просто приятный интерфейс для установки переменных окружения. Это не очень хорошо документировано. В качестве альтернативы они могут быть установлены в имени (inaptly named) «Настройки приложения-> Настройки приложения».

Хотя external authentication provider tutorial for Google предлагает использовать Authentication:Google:ClientId и Authentication:Google:ClientSecret в качестве ключей переменных окружения, это не ключи, заданные в меню аутентификации в Azure.

Если вы хотите, чтобы загрузить значения, которые устанавливаются в меню аутентификации (в отличие от просто установив собственные ключи в «настройках приложения»), вам необходимо выяснить, какие переменные окружения он устанавливает.

Быстрый список всех переменных, используя Get-ChildItem Env: в PowerShell («Куду», доступный из «продвинутых инструментов» на Azure) перечислены переменные, которые должны использоваться вместо:

app.UseGoogleAuthentication(new GoogleOptions() 
{ 
    ClientId = Configuration[ "WEBSITE_AUTH_GOOGLE_CLIENT_ID" ], 
    ClientSecret = Configuration[ "WEBSITE_AUTH_GOOGLE_CLIENT_SECRET" ] 
}); 

Не забудьте обновить ключи, хранящиеся в секретах пользователя!

P.s. Как ни странно, когда я впервые попытался установить переменные, просто используя «Настройки приложения», они исчезли при перезагрузке меню. Просто хедз-ап, этот интерфейс кажется немного ошибкой.