我正在使用jQuery来调用.Net Web服务,如下所示:
var service_url = "https://example.com/myservice.asmx"
$.ajax({
type: "GET",
url: service_url,
dataType: "xml",
data: "ParamId=" + FormId.value,
processData: false,
error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); },
success: function(xml) { DoSomething(xml); }
});
Run Code Online (Sandbox Code Playgroud)
现在我想在Windows身份验证中包装" https://example.com/myservice.asmx ".如何使用jQuery/javascript将凭据传递给服务?
理想情况下,我想使用当前用户的凭据,但如果需要,我可以为所有服务调用使用1个主凭证.
我的后端是在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导致了构建错误,无法使用.
我正在实施基于Angular和Node.js的单页面应用程序,该应用程序在公司Windows Active Directory域环境中的Windows Server上运行.我知道可以通过AD(通过传递用户名和密码)在节点包(例如"passport-ldapauth"和"node-activedirectory")的帮助下进行身份验证.
我的问题是:实现单点登录功能的最可行/最直接的方式是什么,以便已经通过PC /域的Active Directory进行身份验证的用户不必再次输入他们的AD用户名/密码?
我遇到过能够做到这一点的Auth0软件包,但我知道他们需要外部托管的云服务吗?(这不是我的选择).
首先十分感谢.
更新:我一直在调查Kerberos,因为这可能是一个解决方案,但似乎没有任何成熟的NPM包用于节点和Kerberos?更新2:我找到了一个名为Node-SSPI的软件包看起来非常有前景.我没有机会在Windows域上尝试(希望明天会这样),但它能够验证用户登录到我的本地计算机.
谢谢
javascript authentication active-directory single-sign-on node.js