Iva*_*ono 8 asp.net-web-api angular
我的后端是在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,
};
Run Code Online (Sandbox Code Playgroud)Angular:由于最终用户将使用非Windows系统中的Angular应用程序访问WebApi后端,如何通过他/她的Windows凭据?(我有一个登录界面,用户必须输入他的域名/密码).
我想通过代码传递用户凭据.像typed_rest-client这样的东西.不幸的是,这个lib导致了构建错误,无法使用.
在这里您可以找到该库:https ://github.com/zorgoz/Http.BasicWindowsAuthentication
注意:它还没有“发布”,并且它是通过自主机而不是 IIS 集成来设计和测试的,并且从未考虑过并行使用多种身份验证方法。尽管如此,即使不进行修改它也可以工作。
正如评论中提到的,您可以尝试仅使用 IIS。即使仅启用 Windows 身份验证而未启用基本身份验证,如果 ntlm/keberos 失败,它也会回退到某种基本身份验证。浏览器将显示登录对话框。如果您传递用户名和密码,它将像常规 Windows 身份验证一样进行身份验证。正如我所说,您可以在 ajax 请求前面添加适当的标头,那么您就不应该看到挑战。更多这里。上述机制应该透明地工作——尽管我从未尝试过。
如果您想使用我的中间件,您必须决定将其放置在管道中的位置。为此,请使用 UseStageMarker(更多信息请参见此处)。您会注意到,中间件可以提供有关登录失败原因的反馈。如果您愿意,它会在响应中添加两个标头条目,您可以在 Angular 客户端中检查并显示给用户。
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |