2016-11-16 4 views
3

Я добавил аутентификацию Active Directory в Active Directory в мое функциональное приложение, но как только я установил «Действие, которое нужно предпринять, когда запрос не аутентифицирован» на «Войти с помощью Azure Active Directory», интерфейс разработки для приложения-функции дает это сообщение:Azure Function App: Authentication Breaks Development Portal

Ошибка: Нам не удается связаться с вашим приложением. Ваше приложение может иметь временную проблему или может не запускаться. Вы можете проверить журналы или повторить попытку через пару минут. Id Session: 23a5880ec94743f5a9d3ac705515b294 Отметка: 2016-11-16T08: 36: 54.242Z

Предположительно, добавив требование аутентификации перерывы доступа к функции приложения каким-то образом ... хотя я могу внести изменения в коде редактор, и они вступают в силу, я больше не вижу обновлений в панели журнала: например, выходные сообщения компиляции.

Кто-нибудь знает об этом?

До сих пор я пытался просто оставить опцию аутентификации «Разрешить анонимные запросы (нет действий)» и с помощью этого следующий код:

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    log.Info("C# HTTP trigger function processed a request."); 

    var user = "Anonymous"; 
    var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal; 
    if (claimsPrincipal != null && claimsPrincipal.Identity.IsAuthenticated) 
    { 
     user = claimsPrincipal.Identity.Name; 
     log.Info($"Hello {user}");  
    }  

    return req.CreateResponse(HttpStatusCode.OK, "Hello " + user);   
} 

Однако это (справедливо) не редирект поставщик аутентификации ... Я бы предпочел, чтобы приложение позаботилось обо всем этом оружии для меня, но если это означает, что я не вижу сообщения компиляции/сообщения журнала, это довольно сложно понять, что происходит.

ответ

4

Натан,

К сожалению, это ограничение на данный момент, и мы отслеживать его здесь: https://github.com/projectkudu/AzureFunctionsPortal/issues/794

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

else 
{ 
    log.Info("Received an anonymous request! Redirecting..."); 
    var res = req.CreateResponse(HttpStatusCode.Redirect); 
    res.Headers.Location = new Uri(req.RequestUri, $"/.auth/login/aad?post_login_redirect_uri={req.RequestUri.AbsolutePath}&token_mode=session"); 
    return res; 
} 

Мы понимаем, что это не идеальное и ценю ваше терпение, пока мы работаем над улучшением этого.

Спасибо!

+0

Привет, Фабио, спасибо за ваш ответ, что делает трюк. – Nathan

+0

У меня есть работа с перенаправлением, но перенаправлены на этот URL: https://myfunction.azurewebsites.net/.auth/login/aad/callback, как вы это решили? –