如何调试 [Authorize] 属性中的问题
Posted
技术标签:
【中文标题】如何调试 [Authorize] 属性中的问题【英文标题】:How to debug problems in [Authorize] attribute 【发布时间】:2017-01-29 00:12:56 【问题描述】:问题
这就是标题中的所有内容,真的。我有一个[Authorize]
属性,它总是返回 401,我不知道为什么。我怎样才能逐步了解它背后的逻辑?
更多细节
我正在尝试通过 JWT 令牌使用 Azure AD 授权。我已经在其他项目中成功地做到了这一点,所以我确信问题是一些小的配置问题,但据我所知,我与 [Authorize]
的唯一交互是在 Startup.cs
中,我有这个:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
TokenValidationParameters = new TokenValidationParameters
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
SaveSigninToken = true,
,
Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
);
但该位仅在应用程序启动时运行。否则,[Authorize]
对我来说就是一个黑盒子。
感谢您的帮助!
【问题讨论】:
您正在使用WindowsAzureActiveDirectoryBearerAuthentication
。除非您在请求中提供 valid bearer token
作为 authorization header
,否则您将始终得到 401。承载令牌身份验证用于 WebAPI。当您使用WindowsAzureActiveDirectoryBearerAuthentication
时,不会有任何重定向或任何重定向。如果你真的在尝试 WebAPI,那么你真的得到了错误的不记名令牌。
正如我提到的,这个 sn-p 取自一个工作项目,其中完整的身份验证链工作正常。我的问题是我正在尝试在新项目中重用代码。在某些时候,我可能输入了错误的 App ID 或其他一些小细节。这里的整个问题是我不确定如何调试[Authorize]
来找到我的错误。
【参考方案1】:
您可以查看 Fiddler 跟踪以进行调试。您可以在这里查看 ASP.NET 示例https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect
【讨论】:
以上是关于如何调试 [Authorize] 属性中的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 IdentityServer4 访问令牌和 [Authorize] 属性
使用 .NET Core 6 中的 [Authorize] 属性重定向到自定义登录页面