所以我正在使用带有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;
但它并没有真正告诉我为什么我会拒绝。
答案 0 :(得分:1)
因此看起来Azure AD目录已被破坏。我想我创建的原创概念应用程序可能出了问题。无论出于何种原因,我无法在Azure门户中删除该应用程序,因此无法删除目录本身。
然而,不幸的是,创建一个全新的目录似乎解决了这个问题。我遵循了所有相同的指示。
唯一的区别是,我在Web.config中添加了以下内容:<add key="owin:AppStartup" value="buckets_api.Startup"/>
。然而,上次我添加了<add key="owin:AutomaticAppStartup" value="false"/>
来解决我在新模板中遇到的api启动问题。但是,我不相信这就解决了这个问题。
另外,我还注意到,如果没有我以管理员身份重新启动应用,Chrome无法在弹出式浏览器中完成令牌交换。我不确定这是否也是相关的,因为我之前已经获得了令牌,所以我不这么认为。但我想记录一下对我来说有用的东西,以防其他人在将来遇到这件事。