gpt4 book ai didi

angular - 如何将 Windows 凭据从 Angular 客户端传递到 WebAPI?

转载 作者:太空狗 更新时间:2023-10-29 17:15:34 25 4
gpt4 key购买 nike

我的后端是在 IIS 下运行的 ASPNet WebApi2,并使用 Windows 身份验证

我有 2 个客户:

  1. 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,
    };
  2. Angular :由于最终用户将从非 Windows 系统使用 Angular 应用程序访问 WebApi 后端,我如何传递他/她的 Windows 凭据? (我有一个登录屏幕,用户必须在其中输入他的域/名称和密码)。

我想通过代码传递用户凭据。类似于 typed_rest-client .不幸的是,这个库导致构建错误,无法使用。

最佳答案

您可以在这里找到图书馆:https://github.com/zorgoz/Http.BasicWindowsAuthentication

注意:它还没有“发布”,它是用自主机设计和测试的,而不是 IIS 集成,并且从未想过并行使用多种身份验证方法。不过,即使不进行修改,它也可以工作。

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

如果你想使用我的中间件,你必须决定把它放在管道的什么地方。为此使用 UseStageMarker(更多 here)。您会注意到,中间件可以提供有关登录失败原因的反馈。如果您需要,它会在响应中添加两个 header 条目,您可以在 Angular 客户端中检查并显示给用户。

关于angular - 如何将 Windows 凭据从 Angular 客户端传递到 WebAPI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com