此请求的授权被拒绝 - Azure Active Directory - 可以使用哪些日志?

时间:2016-09-11 08:07:19

标签: azure oauth-2.0 asp.net-web-api2 azure-web-sites azure-active-directory

所以我正在使用带有OAuth 2.0进程的邮递员尝试通过Azure Active Directory对我的WebApi进行身份验证。我仍然使用基本的ValuesController进行默认项目,只是尝试使身份验证和授权工作。

我跟着this video设置邮递员,据我所知,我已按照描述在活动目​​录中配置了新应用程序。

令牌交换正在运行。授权承载{token}正在正确发送。这是一个示例标记:

{承载eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL2J1Y2tldHMub25taWNyb3NvZnQuY29tL2J1Y2tldHMtcmVzdC1hcGkyMDE2MDkwMzEwNDAzMSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzIwYmI2ZmEwLTU0OTItNDk0My05MjkwLWRiMWJkMTU3YjFkMS8iLCJpYXQiOjE0NzM5MTg3MDAsIm5iZiI6MTQ3MzkxODcwMCwiZXhwIjoxNDczOTIyNjAwLCJhY3IiOiIxIiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjlkZWVmMWFlLWU0MmYtNDg4ZC04MmY3LWUwMWRjYzNkMzE5NyIsImFwcGlkYWNyIjoiMSIsImZhbWlseV9uYW1lIjoiSWppZGFraW5ybyIsImdpdmVuX25hbWUiOiJBeW8iLCJpcGFkZHIiOiI3MC4xNzMuNDAuMjIiLCJuYW1lIjoiQWRtaW4iLCJvaWQiOiJmMTljY2Q5ZC1iMDZhLTQ0MGUtYmE3Ni05NWRjNGE4NDY3ZjEiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJMMHkzeUVwRGdRMHV2MG0wZWNKcFFIeVpZNHkzYTk3UUpnNGl6WlpzZmNVIiwidGlkIjoiMjBiYjZmYTAtNTQ5Mi00OTQzLTkyOTAtZGIxYmQxNTdiMWQxIiwidW5pcXVlX25hbWUiOiJhZG1pbkBidWNrZXRzLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluQGJ1Y2tldHMub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.NXpvslBXOpRNkmWQ qj7XqVzloS3KoeSqPIlo-yUPGYkZ4bHPrAH6yD4sxMYz-19VIPFRDUMP-5h5hmaMKmuykjNUltz6wejQT9f4IeV6i7VtP3BlkfASZeAdKAiSjKh6ydV8PuJjV2HHh2WvxIKC3QQXzROwWAdeXLcgMTiKSBMULzFV8BsecgtI86_L2OISgbQZ2LgF137EPJoG7C4L1IO-10T1QIVl-Emy6AS0VKVxdzjCgiT-DFtccxME6n1CruoDy6mTKztcAkiFR1IlgY6Fvj-Y_goMQyxA5sCRebWnOQ5jeUKv4KNyNWOLJU_RiZYe0kj4IT3KDc9jjtHykg}

但是,即使我成功获得令牌,当我在VS中逐步调试时,我看到令牌进入,授权失败。我收到以下回复:

{"Message":"Authorization has been denied for this request."}

问题似乎在服务器端。当我重写IsAuthorized以返回true时,它会起作用。

在Azure中,两个应用程序都位于具有委派权限的同一目录中。

我是否有任何日志可以查看确切的拒绝原因?从那里我可以弄清楚发生了什么。

我已经开启了追踪,但是:

// Web API configuration and services
var traceWriter = config.EnableSystemDiagnosticsTracing();
traceWriter.IsVerbose = true;
traceWriter.MinimumLevel = TraceLevel.Debug;

但它并没有真正告诉我为什么我会拒绝。

1 个答案:

答案 0 :(得分:1)

因此看起来Azure AD目录已被破坏。我想我创建的原创概念应用程序可能出了问题。无论出于何种原因,我无法在Azure门户中删除该应用程序,因此无法删除目录本身。

然而,不幸的是,创建一个全新的目录似乎解决了这个问题。我遵循了所有相同的指示。

唯一的区别是,我在Web.config中添加了以下内容:<add key="owin:AppStartup" value="buckets_api.Startup"/>。然而,上次我添加了<add key="owin:AutomaticAppStartup" value="false"/>来解决我在新模板中遇到的api启动问题。但是,我不相信这就解决了这个问题。

另外,我还注意到,如果没有我以管理员身份重新启动应用,Chrome无法在弹出式浏览器中完成令牌交换。我不确定这是否也是相关的,因为我之前已经获得了令牌,所以我不这么认为。但我想记录一下对我来说有用的东西,以防其他人在将来遇到这件事。