如何将Windows凭据从Angular客户端传递到WebAPI?
我的后端是在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: 我想通过代码传递用户凭据.像typed_rest-client这样的东西.不幸的是,这个lib导致了构建错误,无法使用. 解决方法
在这里您可以找到图书馆:
https://github.com/zorgoz/Http.BasicWindowsAuthentication
注意:它尚未“发布”,它是使用自主机设计和测试的,而不是IIS集成,并且从未考虑过并行使用多种身份验证方法.尽管如此,它甚至可以不加修改地工作. 如评论中所述,您可以尝试仅使用IIS.即使只启用了Windows身份验证而基本没有启用,如果ntlm / keberos失败,它将回退到某种基本版本.浏览器将显示登录对话框.如果您传递用户名和密码,它将进行身份验证,因为它将是常规Windows身份验证. 如果您想使用我的中间件,您必须决定将它放在管道中的哪个位置.使用UseStageMarker(更多here).您会注意到,中间件可以提供有关登录失败原因的反馈.如果需要,它将在响应中添加两个标题条目,您可以在Angular客户端中检查并显示给用户. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |