javascript - 如果我的所有用户都有 AD 帐户,使用集成 Windows 身份验证来保护 .NET WebAPI 以供 JavaScript 客户端使用的风险是什么?

标签 javascript security asp.net-web-api windows-authentication

我们有一个允许域用户访问的 .NET WebAPI。我们希望支持构建 JavaScript 单页应用程序以从 WebAPI 获取和呈现数据。这些 JavaScript 应用程序应该能够在加入域的 PC、网络外的平板电脑、手机、非 IE 浏览器等的浏览器中运行。本地客户端是一个潜在的 future 目标,但并非完全必需。

假设我们已经弄清楚了授权方面,因此这里的关键问题是根据本地 Active Directory 对用户进行身份验证,这样我们就可以在我们的 WebAPI 中间件中看到他们的身份(域\用户)。

如果我们只在 WebAPI(和 IIS)中启用集成 Windows 身份验证,这对于 Intranet 方案似乎没问题。我看到很多关于将它用于 Internet/域外场景的模糊警告。

具体来说,我看到了对使用 NTLM 的担忧,它不够安全,而且 NTLM 可以通过某些网络代理被阻止。总的来说,这是一种“老式”的方法。但细节方面不多。

任何人都可以向我提供有关这些问题的更多细节或提出其他安全问题,从而使这种方法成为一个坏主意吗?

最佳答案

Kerberos 身份验证适用于 Intranet 中加入域的设备。但大多数手机和平板电脑无法加入域。此外,要允许对 Active Directory 进行身份验证,您必须将您的 AD 公开到互联网,这是您的管理员肯定会反对的事情。

您可以将 ADFS 与暴露于互联网的代理一起使用,并使用基于 token 的身份验证。这将允许任何拥有域凭据的人进行身份验证。 ADFS 支持各种协议(protocol)来获取安全 token (SAML、WS-Federation、WS-Trust 和 3.0 还支持 OAuth 2.0 code flow)。

ADFS 3.0 还支持自带设备 (BYOD),它允许您注册将向其颁发 token 的设备。

或者,您可以将 Active Directory 同步到 Azure Active Directory (AAD) 并将其用作身份验证提供程序。

关于javascript - 如果我的所有用户都有 AD 帐户,使用集成 Windows 身份验证来保护 .NET WebAPI 以供 JavaScript 客户端使用的风险是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463065/

相关文章:

facebook - 如何通过 ASP.NET Identity Facebook AuthenticationProvider 传递自定义声明?

asp.net-mvc - WebAPI + Azure 网站 + 客户端网站 + SSL - 我需要多少个证书?

asp.net-web-api - 当非浏览器客户端的安全 webapi 时,与 ADFS 一起使用什么协议(protocol)

javascript - 使用 spread 减少 es6 丢失的嵌套对象数组

javascript - P5 - 处理。无法同时运行和渲染多个草图

php - 什么时候需要在 PHP 中使用 Classes

javascript - 如何在使用 Grails 3.3.2 的 war 版本中不生成 .gz 文件

php - 找到 .ini 文件但内容丢失(parse_ini_file() 不工作)

javascript - Knockoutjs + Ckeditor 需要帮助解决一些问题

javascript - 动态图像导入