自动和手动验证AD用户 - WebAPI 2服务器和SPA客户端

时间:2017-02-12 10:44:49

标签: authentication asp.net-web-api active-directory asp.net-web-api2 single-page-application

我正在使用WebAPI开发企业/ Internet应用程序2 RESTful服务器和SPA Web客户端(Angular2) - 所以我有两个使用ASP.NET 4.6 Empty模板创建的独立项目,它们都使用OWIN并且是IIS托管的。

身份验证的要求是:

  1. 登录到工作站的Active Directory用户将在浏览器中打开任何页面后自动进行身份验证,如果在数据库中找到用户ID /名称,,无需输入她的用户/密码。我们将其命名为 自动登录 。否则,如果在DB中找不到它,它将重定向到登录页面。
  2. 还应该有一个注销选项,在将用户注销后将用户重定向到登录页面。
  3. 在登录页面中,任何AD用户都可以输入她/他的AD用户和通过,并且在成功检查数据库(已存在)和AD(有效凭证)后,她/他将登录到系统(显然它可能不同于用户当前已登录工作站)
  4. 除了Web客户端之外,它还有其他客户端,例如可以连接WebAPI后端并由WebAPI后端提供服务的移动应用程序。用户将使用他们的AD用户&也过去了。我们将其命名为 手动登录。
  5. 根据REST架构并将AD企业和互联网/移动用户放在一起,身份验证应该是基于令牌的 - 这是我迄今为止所发现的,但我不确定。

    我阅读了有关OWIN身份验证体系结构和Windows身份验证的内容,我检查了MixedAuth,现在我认为它是此要求的最近解决方案,因为它允许应用程序定义的用户对Windows / AD用户并排进行身份验证。但是即使在深入研究它之后SPA sample我也找不到我的方式并且感到困惑。

    任何人都可以提供帮助吗?

    1. 我应该在WebApi服务器和SPA客户端上实际执行哪些身份验证要求?

    2. 我应该添加哪些中间件以及如何配置/操作它们?

      UseCookieAuthentication

      UseExternalSignInCookie

      UseOAuthBearerTokens

    3. 我可以仅依靠承载令牌(使用OAuthBearerTokens MW)并为经过身份验证的Windows用户获取相同的令牌,以统一基于承载令牌的身份验证模型吗?如果是这样,怎么样?

    4. 我应该如何以及在何处放置我的代码以检查数据库中是否存在AD用户,如果不是,则拒绝身份验证?

    5. 非常感谢。

0 个答案:

没有答案