如何在ASP.NET MVC项目中使用OpenID和Owin中间件进行Web API 2控制器的AzureAD身份验证

问题描述:

我有一个ASP.NET MVC5应用程序,其中包含少量控制器的WEB API2项目。我已经使用AzureAD和OpenID连接和OWIN中间件为ASP.NET MVC5项目设置了AzureAD身份验证。如何在ASP.NET MVC项目中使用OpenID和Owin中间件进行Web API 2控制器的AzureAD身份验证

从ASP.NET MVC项目的角度来看,一切正常。 WEB API2控制器用于处理来自angularjs,Android 和iOS应用程序的请求。 WebAPI控制器需要处理来自发出AJAX请求的未经身份验证的客户端(angularjs,Android,iOS应用程序)的请求。

在进行AzureAD身份验证设置之前,它使用内部ADFS身份验证进行配置。在这种情况下,我通过传递 WEB API2控制器的前提ADFS身份验证来跟踪下面的链接,它对我来说工作得很好。

Can I bypass organizational authentication for a WebAPI controller inside an MVC app?

谁能帮我知道如何绕过的WEB API2控制器,允许在这种情况下,一些代码样本未通过认证的客户端的请求azuread认证?

+0

您的webAPI是否托管在IIS中?如果是的话,你是否检查了你的网站的授权许可(如果有的话,它们会在你的网络API调用发生之前被考虑到,这将解释你所看到的) –

默认情况下,Web API控制器对匿名用户是可访问的。如果匿名用户访问该控制器时遇到未认证问题(401),请检查特定控制器是否存在Authorize属性并删除该属性。

+0

我看到电话网页API被封锁。对于任何web api 2控制器也没有[Authorize]属性。 –

+0

Fei是对的,但是您的webAPI会在IIS中托管吗?如果是的话,你是否检查了你的网站的授权许可(如果有的话,它们会在你的web api调用发生之前被考虑到,这将解释你所看到的) –

+0

是的web api托管在IIS中。有一个自定义授权,它继承了asp.net mvc应用程序的AuthorizeAttribute类。此自定义授权注入到FilterConfig类(filters.Add(new CustomAuthorizationAttribute());) –