dac*_*sti 2 model-view-controller azure visual-studio asp.net-web-api azure-active-directory
所以这必须是我需要一个涂料巴掌的情况:
我使用Visual Studio(2013和2015)创建了新的测试WebAPI应用程序,并使用标准项目创建对话框将它们配置为使用组织帐户进行身份验证.我已经将它们连接到我工作场所的azure订阅上的测试Azure Active Directory(AAD)目录以及我的MSDN azure订阅中的一个.
在所有情况下,当第一次加载应用程序时,我得到一个IIS 401.2响应.好的.我在项目属性窗口上启用匿名身份验证.然后,当我导航到使用[Authorize]属性修饰的控制器时,我得到以下内容:
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)
这既发生在本地也发生在云服务Web角色中(将Web角色URL添加到应用程序URL).
我知道它必须是简单的东西.我必须错过一些绝对愚蠢的东西,但不能,因为我的生活,弄清楚它可能是什么.
有没有人想到为什么我没有被重定向到AAD登录页面?
Ric*_*ney 10
行为("被重定向到AAD登录页面")是您对Web应用程序(如ASP.NET MVC Web应用程序)的期望.但是,此行为不适用于ASP.NET Web API应用程序.Web API(REST API)要求客户端在请求中显示令牌.如果您不提供,则授权过滤器会拒绝该请求,这就是您在"导航"到Web API网址时看到HTTP 401响应的原因.
Web API项目模板为您的应用程序配置OWIN中间件,以处理和验证客户端提供的JWT令牌.证据就在项目的Startup.Auth.cs文件中.
因此,您需要创建一个客户端应用程序,该应用程序使用Azure AD进行身份验证以获取令牌.客户端必须在Azure AD中注册,并且可以访问Web API.然后,从客户端应用程序,您可以使用Azure AD发出的令牌调用Web API.有关此方案的快速阅读,请查看此MSDN杂志文章.不要让文章的日期与您有关.它仍然适用于Visual Studio 2013和2015,并且很好地解释了此方案如何以及为何如此工作.
此外,有关验证和调用Web API的其他方案,请参阅GitHub上的Azure AD示例.
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |