【问题标题】:Authenticating a Cloud NodeJS Backend With WPF Client with Active Directory ADFS使用带有 Active Directory ADFS 的 WPF 客户端对 Cloud NodeJS 后端进行身份验证
【发布时间】:2018-12-12 01:26:10
【问题描述】:

我过去曾问过一个类似的问题:Understanding ADFS Login With Windows Native WPF Client,我似乎对如何在 WPF 本机 Windows 应用程序上使用活动目录 ADFS 进行身份验证有了更好的理解(我可以使用 ADAL 库),但我我仍然不知道如何将该身份验证传输到远程服务器(NodeJS 服务器)

我还发现我可以这样做,以便本机 WPF 应用程序找到当前登录的用户,通过使用这个,WPF 知道用户是合法的,因为他们登录到他们的 Windows 帐户。

var context = new PrincipalContext(ContextType.Domain, DOMAINNAME); var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, Environment.UserName);

但是,我不知道如何将此身份验证传输到我们的远程 NodeJS 服务器(没有 UI,WPF 应用程序就是 UI)。我可以发送我们的远程应用程序详细信息,例如 samAccountName 是 this,但任何人都可以发送到我们的远程服务器并声称他们的 samAccountName 是 this。 WPF 知道用户是合法的,但我们的 NodeJS 应用程序无法验证这一点。如果我将私有证书添加到我们的 WPF 应用程序以供我们的 NodeJS 服务器验证,则可以反编译 WPF 应用程序以获取证书。我该如何解决这个问题?

【问题讨论】:

  • 我们可以在 WPF 端使用 JWT 吗?我们目前在 NodeJs 端创建所有 JWT
  • 没有客户端不能向服务器颁发 JWT 令牌,作为一种做法,它是身份验证令牌,由服务器颁发以识别其客户端。
  • 知道了。这很有意义。尽管 Windows 服务器通过 ADFS 发出 JWT 并将其传递给 WPF 应用程序,然后 WPF 应用程序又将其传递给我们的远程 NodeJS 应用程序(并且 NodeJS 应用程序具有 ADFS 的签名公钥来解密它),这是否有意义?跨度>

标签: c# node.js wpf saml adfs


【解决方案1】:

您正在考虑在错误的上下文中进行身份验证。例如由于 Node 服务器为您提供服务,因此每个客户端都应向 Node 服务器表明自己的身份,以便使用 Node 服务。 在您的实现中,您正在从 AD 对 wpf 进行身份验证,这没问题,但是 WPF 应用程序充当 Node 服务器的客户端,因此应该有另一个身份验证来提供有效 wpf 客户端连接到服务器的声明。

现在说到重点,您想从 AD 验证 WPF 客户端 + 节点服务器。在这种情况下,实际上您是从某个来源(即 AD)验证这两个应用程序。为此,您需要一些中间件,它可以验证这两个应用程序。

这种情况的答案是 Microsoft Identity Server。请访问一些教程,希望它能解决您的要求。

【讨论】:

  • 感谢您的回复!要继续查看这些教程,这是否需要我们拥有一个额外的 asp.net 服务器?我们的 WPF 目前没有关联的 asp.net 服务器,仅与我们的 NodeJS 应用程序通信。另外,您是否碰巧知道指向任何有用的 Microsoft Identity Server 教程的链接?我知道在这一点上,我应该做我的研究,但初步链接都只显示 asp.net 示例。再次感谢!!
  • 你好,托马斯。我对nodejs没有任何经验。我为你找到了一篇文章。你能检查一下吗codeburst.io/…
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 2021-10-29
  • 2016-05-12
  • 2018-11-10
  • 2012-05-25
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多