我有一个.NET 4.5 WebAPI应用程序,它使用“集成Windows身份验证”对Active Directory进行身份验证。允许本地Active Directory中的每个用户进行身份验证。身份验证完全在应用程序外部完成,我可以通过ApiController.User
访问当前用户主体。
对于Azure App Services中的部署,我尝试使用Azure AD进行大致相同的操作 - 使用OAuth身份验证允许来自特定Azure AD租户的所有用户登录,这看起来需要的不仅仅是WebConfig中的单行。
我跟随Azure AD Quickstart逐字逐句,直到SignIn和SignOut函数:它们只适用于MVC和Controller
,而不适用于WebAPI和ApiController
。
我发现ApiController works differently。但我仍然停留在我的ApiController无法提供MS_UserPrincipal
属性的位置。
This tutorial使用WebAPI和EntityFramework,但在Api启动之前不需要身份验证。此外,它创建了一个用户帐户数据库 - 在我的例子中,Azure AD将是该数据库。
我发现我可以使用
强制执行所有控制器的登录要求filters.Add(new System.Web.Mvc.AuthorizeAttribute());
过滤器配置中的,但我仍未转发登录,MS_UserPrincipal
和ApiController.User
也不包含AzureAD IPrincipal。
那么,我如何针对整个应用程序(“在服务器边界”)实施OAuth身份验证要求(针对特定租户的Azure AD)?