奇怪的是,这个简单的解决方案还没有实现,或者我不能谷歌它;p)(我从过去 5 天开始尝试)。我的要求:
- 从 Angular 应用程序(withCredentials = true)调用 URL 以查看它是否是 Windows 用户(挑战 NTLM)。(我可以根据访问它的 URL 用户来配置它)。如果它是有效的 Windows 用户并且我在 DB 中找到它们,我将返回承载令牌。
- 如果上述调用返回未经授权 (401),我会在我的 AngularJS (1.6) 客户端中向用户显示登录表单。用户提供非 Windows 用户名和密码,当用户单击登录时,从角度服务转到另一个 URL(用于获取承载令牌 - 标准 OWIN 东西)。
** 在上述任何情况下,我都会在我的客户端中存储承载令牌以进行任何进一步的 API 交互。
- 我没有使用 ASP.NET 身份,但我有自己的 DAL 来验证来自 DB 的用户。
- 我将拥有自己的自定义 Authorize (inherited) 属性(仅检查 Bearer Token)。
- 我不希望用户在我的表单上输入 Windows 登录名并从 Active Directory 对他们进行身份验证。
- 我不希望 Windows 用户单击任何单独的按钮来登录。(他们应该无缝登录 - 浏览器提示他们登录窗口)
我已经看过数百个帖子,但我无法确切地看到需要什么。混合身份验证需要基于 Cookie 或单独的 MVC 实现。(很多混乱)已经提到:
- https://techblog.dorogin.com/mixed-windows-forms-authentication-for-ajax-single-page-application-e4aaaac0424a
- https://techblog.dorogin.com/mixed-windows-forms-authentication-for-ajax-single-page-application-e4aaaac0424a
- https://github.com/MohammadYounes/OWIN-MixedAuth
- 不知道这是否有帮助:(但再次使用 cookie)https://github.com/pysco68/Pysco68.Owin.Authentication.Ntlm
有人可以帮忙吗?
我可能不得不在明天晚上之前放弃这个:-(