wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将Windows凭据从Angular客户端传递到WebAPI?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我的后端是在IIS下运行的ASPNet WebApi2,它使用 Windows Authentification. 我有2个客户: > WinForms: 传递凭证很简单.我做以下事情: var credentialCache = new CredentialCache(); credentialCache.Add(new Uri(uri.GetLeftPart(UriPartial.Au
我的后端是在IIS下运行的ASPNet WebApi2,它使用 Windows Authentification.

我有2个客户:

> WinForms:
传递凭证很简单.我做以下事情:

var credentialCache = new CredentialCache();
    credentialCache.Add(new Uri(uri.GetLeftPart(UriPartial.Authority)),"NTLM",credentials);

    WebRequestHandler handler = new WebRequestHandler()
    {
        AuthenticationLevel = AuthenticationLevel.MutualAuthRequested,Credentials = credentialCache,PreAuthenticate = true,UseDefaultCredentials = false
    };

    client = new HttpClient(handler,true)
    {
        BaseAddress = uri,};

> Angular:
由于最终用户将使用非Windows系统中的Angular应用程序访问WebApi后端,如何通过他/她的Windows凭据? (我有一个登录界面,用户必须输入他的域名/密码).

我想通过代码传递用户凭据.像typed_rest-client这样的东西.不幸的是,这个lib导致了构建错误,无法使用.

解决方法@H_301_25@
在这里您可以找到图书馆: https://github.com/zorgoz/Http.BasicWindowsAuthentication

注意:它尚未“发布”,它是使用自主机设计和测试的,而不是IIS集成,并且从未考虑过并行使用多种身份验证方法.尽管如此,它甚至可以不加修改地工作.

评论中所述,您可以尝试仅使用IIS.即使只启用了Windows身份验证而基本没有启用,如果ntlm / keberos失败,它将回退到某种基本版本.浏览器将显示登录对话框.如果您传递用户名和密码,它将进行身份验证,因为它将是常规Windows身份验证.
正如我所说,你可以在你的ajax请求中预先添加正确的标题,然后你不应该看到挑战.更多here.上述机制应该透明地工作 – 尽管我从未尝试过.

如果您想使用我的中间件,您必须决定将它放在管道中的哪个位置.使用UseStageMarker(更多here).您会注意到,中间件可以提供有关登录失败原因的反馈.如果需要,它将在响应中添加两个标题条目,您可以在Angular客户端中检查并显示用户.

大佬总结

以上是大佬教程为你收集整理的如何将Windows凭据从Angular客户端传递到WebAPI?全部内容,希望文章能够帮你解决如何将Windows凭据从Angular客户端传递到WebAPI?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: