【问题标题】:How to debug/trace ADAL authentication?如何调试/跟踪 ADAL 身份验证?
【发布时间】:2015-02-06 12:22:12
【问题描述】:

我正在尝试 Microsoft 在此处发布的 Azure Active Directory 示例之一:https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet

我设法搞砸了 web.config 中 TodoListService 的受众值,并在调用服务时得到了 401 Unauthorized 响应。

问题是,我花了很长时间才弄清楚出了什么问题。在调试器中运行它并没有在输出窗口中产生任何有用的跟踪语句。事件查看器中也没有任何事件。

我可以打开任何配置来帮助我更快地找到它吗?是否有可用于调试的具有日志记录或诊断功能的中间件?

我想我可以从GitHub 获取源代码并尝试调试问题,但这并不方便。我有什么遗漏吗?

【问题讨论】:

    标签: security debugging authentication azure adal


    【解决方案1】:

    在 ADAL v3 中,您创建一个实现 IAdalLogCallback 的类:

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

    然后,设置静态 LoggerCallbackHandler 对象的 Callback 属性:

    LoggerCallbackHandler.Callback = new AdalLoggerCallback();
    

    【讨论】:

    • 如何设置日志记录级别?
    • 您的代码处理日志事件,因此您可以确定要处理的级别。
    【解决方案2】:

    您可以使用启用记录器

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

    这里有完整的细节https://github.com/AzureAD/azure-activedirectory-library-for-dotnet#logs

    【讨论】:

    • AdalTrace 似乎已被删除。我不确定在哪里,但它在 2.23 和 3.10 之间。
    • 为此,我在 GitHub 存储库中添加了 issue
    • 我已经发布了 ADAL v3 的答案。
    • 不想看的人:Paul Schaeflein's answer
    【解决方案3】:

    虽然接受的答案确实打开了 ADAL(客户端库)的跟踪,但我遇到了一个问题,我需要为 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

    原来我忘了关闭多租户服务的颁发者验证。

    【讨论】:

    • 但是您确实在 SecurityTokenValidated 通知中验证了颁发者,对吧? :)
    • 不,我们构建了一个特殊的中间件来验证发行者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2016-12-31
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多