使用Windows身份验证登录Angular应用程序

5
我创建了一个Angular 2应用程序。现在,这些是Windows身份验证的要求。
1)如果任何用户“在组织内”访问此应用程序,则不应出现登录提示,应能够“直接登录”到应用程序中。
2)如果任何“特定用户”“在组织内”尝试访问该应用程序,则应获得特定的“角色(如管理员,经理)”,并能够直接登录。
3)如果任何“组织外”的用户尝试访问该应用程序,则应“获取登录提示”。
编辑:后端也将发挥重要作用。我使用Node.js和Express创建了REST API。那么this passport package会对我的情况有所帮助吗?我已在我的Node.js REST API上实现了passport.js,但现在该如何在Angular端验证它。
感谢任何帮助,并将授予悬赏。

你认为后端使用什么并不重要,而且你认为在没有某种后端的情况下,浏览器中的JS如何与Windows身份验证进行交互?你是否正在使用WinJS或其他可以使应用程序访问浏览器上下文之外的系统级信息的工具? - shaunhusain
@shaunhusain编辑了问题... - Nimish goel
1
是的,那个链接的包看起来会对你有所帮助,因为你似乎已经意识到最终只需要以某种方式接入活动目录来获取这些数据,Angular 部分将像通过任何其他系统进行身份验证一样。如果你想保护所有客户端代码(通常不必要,通常数据才是重点),你可以在节点服务器配置中限制它,但通常从客户端检查是否允许认证并确保服务器基于检查用户 AD 权限拒绝请求就足够了。 - shaunhusain
1
这里的难点在于如何从客户发送的信息中确定他们是哪个AD用户...会有一些复杂性,但我认为这是正确的方向或思考过程。 - shaunhusain
谢谢,@shaunhusain,我已经在我的Node.js REST API中实现了这个passport.js。但是你知道吗,我该如何在Angular端使用这些验证呢? - Nimish goel
1个回答

5
为了使其正常工作,后端将是您的主要调用点,passport.js(实现在您的node.js中而不是客户端)将允许您完成大部分繁重的工作,但仍需要对Web服务器进行一些基本更改。
您正在寻求在此处实现IWA(集成Windows身份验证),如果您希望客户端知道用户具有哪些角色,则建议的方法是在服务器端创建一个API,将这些变量作为其响应的一部分返回(然后将它们取出并存储在某个地方供您的angular2使用)。
例如,您可以让/authCheck返回{ role: [], username: "用户名" },如果用户未经过身份验证,则返回401。这样,如果穿透式IWA失败,您可以通过将用户引导到登录页面来处理401响应。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接