如何调试/跟踪ADAL身份验证?

3
我正在尝试使用Microsoft公开发布的Azure Active Directory示例之一: https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet。 我在TodoListService的web.config中搞砸了受众值,并在调用服务时收到了401未经授权的响应。
问题在于,我花费了太长时间才弄清楚问题所在。在调试器中运行没有在输出窗口中产生任何有用的跟踪语句。事件查看器中也没有事件。
是否有可以打开的配置,可以帮助我更快地找到此错误?是否有具有日志记录或诊断功能的中间件可用于调试此问题?
我想我可以从GitHub上获取源代码,并尝试调试此问题,但这并不方便。我有什么遗漏的吗?
3个回答

4
在ADAL v3中,您需要创建一个实现IAdalLogCallback接口的类:
public class AdalLoggerCallback : IAdalLogCallback
{
  public void Log(LogLevel level, string message)
  {
    Console.Write(message);
  }
}

然后,设置静态LoggerCallbackHandler对象的回调属性:
LoggerCallbackHandler.Callback = new AdalLoggerCallback();

我该如何设置日志级别? - Bob
你的代码处理日志事件,因此你可以确定要处理哪个级别。 - Paul Schaeflein

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>

默认情况下,输出将显示在调试控制台窗口中,但您可以通过添加跟踪侦听器来更改此设置。我在这里找到了一篇非常信息丰富的文章(传送门)

结果发现我忘记为多租户服务关闭发行方验证。


但是您在SecurityTokenValidated通知中验证了发行者,对吧? :) - Paul Schaeflein
不,我们构建了一个特殊的中间件来验证发行者。 - MvdD

3

1
似乎已经删除了AdalTrace。我不确定在哪里,但它应该是在2.23和3.10之间的某个版本中被删除了。 - jcelgin
我已经在 GitHub 仓库中添加了一个问题(issue):https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/527。 - Scott
我已经发布了 ADAL v3 的答案。 - Paul Schaeflein
不想查看的人可以参考:Paul Schaeflein的答案 - JoshuaTheMiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接