2014-12-08 5 views
3

я пытался один из Azure образцов Active Directory Microsoft опубликовала здесь: https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNetКак отлаживать/отслеживать аутентификацию ADAL?

мне удалось ввернуть значение аудитории в web.config для TodoListService и получил 401 Несанкционированного ответ при вызове службы.

Проблема в том, что мне потребовалось слишком много времени, чтобы выяснить, что было не так. Запуск его в отладчике не вызвал никаких полезных инструкций трассировки в окне вывода. Также не было событий в средстве просмотра событий.

Есть ли какая-либо конфигурация, которую я могу включить, которая помогла бы мне быстрее найти ее? Есть ли промежуточное программное обеспечение с возможностями ведения журнала или диагностики, которые я мог бы использовать для его отладки?

Возможно, я мог бы захватить источники от GitHub и попытался отладить проблему, но это вряд ли удобно. Есть что-то, чего я не хватает?

ответ

2

Вы можете включить регистратор с помощью

Trace.Listeners.Add(new ConsoleTraceListener()); AdalTrace.LegacyTraceSwitch.Level = TraceLevel.Verbose;

Fulll подробности здесь https://github.com/AzureAD/azure-activedirectory-library-for-dotnet#logs

+1

Оказывается AdalTrace было удалено. Я не знаю, где, но это было где-то между 2.23 и 3.10. – jcelgin

+0

Я добавил [вопрос] (https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/527) в репозиторий GitHub для этого. – Scott

+0

Я отправил ответ для ADAL v3. –

3

Хотя принятый ответ не включить трассировку для Адал (библиотеки клиента), я столкнулся с проблемой, когда я нуждался трассировка включена для промежуточного ПО аутентификации OWIN.

Мой код был просто получить разрешение отказано из моей службы при установке этого промежуточного уровня:

public void Configuration(IAppBuilder app) 
{ 
    app.UseWindowsAzureActiveDirectoryBearerAuthentication(
     new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
    { 
     Audience = ConfigurationManager.AppSettings["Audience"], 
     Tenant = ConfigurationManager.AppSettings["Tenant"] 
    } 
} 

Включение протоколирования можно сделать, добавив следующую секцию web.config вашего проекта:

<configuration> 
    <system.diagnostics> 
    <switches> 
     <add name="Microsoft.Owin" value="Verbose" /> 
    </switches> 
    </system.diagnostics> 
</configuration> 

Выход будет отображаться по умолчанию в окне консоли отладки, но вы можете изменить это, добавив прослушиватели трассировки. Я нашел очень информативную статью here.

Оказалось, что я забыл отключить проверку эмитентом услуги мульти-арендатора.

+0

Но вы подтверждаете, что эмитент в уведомлении SecurityTokenValidated, правильно? :) –

+0

Нет, мы создали специальный кусок промежуточного программного обеспечения для проверки эмитента. – MvdD

4

В ADAL v3, вы создаете класс, который реализует IAdalLogCallback:

public class AdalLoggerCallback : IAdalLogCallback 
{ 
    public void Log(LogLevel level, string message) 
    { 
    Console.Write(message); 
    } 
} 

Затем установите Обры свойство статического объекта LoggerCallbackHandler:

LoggerCallbackHandler.Callback = new AdalLoggerCallback(); 
+0

Как установить уровень ведения журнала? – Bob

+0

Ваш код обрабатывает событие журнала, поэтому вы можете определить, какой уровень обрабатывать. –