我有一个现有的MVC 5应用程序,它使用Active Directory和NTLM身份验证/授权来执行控制器操作。我是通过在项目根web.config文件中使用类似的东西来实现的。它可以像我期望的那样工作。
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<authentication mode="Windows" />
<authorization>
<allow roles="MyDomain\MyAuthorizedGroup" />
<allow users="*" />
</authorization>
<roleManager enabled="true" defaultProvider="AD">
<providers>
<clear />
<add name="AD" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
现在,在同一个项目中,我正在使用WebAPI编写RESTful服务。 WebAPI端点将通过OAuth令牌和Owin中间件在代码中受到保护。具体来说,是Microsoft.Owin.Security.OAuth提供的类。我重写了OAuthAuthorizationServerProvider类以公开令牌生成端点,并且我已经将[Authorize(Roles =“...”]属性添加到我的WebAPI端点以验证令牌中的角色。所有这些都有效,但是只有在我禁用了现有的NTLM身份验证时才会这样做。
这是我尚未解决的问题。我需要支持新的WebAPI端点的OAuth,现有MVC 5控制器操作的NTLM,以及一些新的MVC 5控制器操作的OAuth,这些操作是为将与WebAPI端点通信的网页提供服务。
我已将API控制器和MVC控制器分离到项目/磁盘上的单独文件夹中。有了这个,这就是我所尝试的(并且抱歉缺少实际的配置元素;由于某种原因,SO没有渲染它们。)
所以现在,我很茫然。任何人都可以提供任何指导方式吗?