【问题标题】:.NET Desktop (Non-web) application using SAML 2.0 SSO with a Kerberos Token使用带有 Kerberos 令牌的 SAML 2.0 SSO 的 .NET 桌面(非 Web)应用程序
【发布时间】:2018-10-16 23:40:44
【问题描述】:

我已经阅读了很多关于此的内容,以便为客户实施此功能。我 100% 确定我误解了某些东西,因为现在我的脑海里没有任何意义。

我们的客户希望在我们正在制作的应用程序中添加 SSO 功能。这个想法是,在启动时,当程序安装在他们的一位客户上时,应用程序将使用 SSO 验证用户的身份,以确定他们是否被允许运行它。

客户在 Intranet 上有一个端点,该端点应该使用用户拥有的角色列表来响应我们的 SAML 请求,我们会对照授权角色的静态列表来检查此人是否拥有正确的角色权限。

我们应该使用 Kerberos 令牌。现在,我在网上查看的每一页似乎都对那部分有不同的看法。起初,我认为我必须以某种方式 obtain 那个 Token 并将其添加到 SAML POST 请求中的某处。

然后,在谷歌搜索如何获取令牌时,我得到 more 和 more 结果说我不必这样做,它是自动完成的,并且端点知道“谁”在调用。

此外,most websites 是 assuming 调用者(我的应用程序)是一个 Web 应用程序,并且本教程的许多步骤都在使用 Web.Config 和服务器,这两个我都没有没有。

由于我尝试的一切似乎都失败了,而且由于我无法控制端点来检查它是如何工作的或出了什么问题(我只得到错误代码),我完全迷失了。

所以这个问题是关于直截了当的。

我的应用程序不是基于网络的,我确实不制作或查看响应我的请求的端点。

应用程序在 Citrix 环境中运行,并且必须与 Intranet 上的端点通信。我自己不在这个 Intranet 上,我们从远程位置登录到 Citrix 以进行测试。

我是否必须在我的代码中明确获取 Kerberos 令牌,如果需要,如何获取(我见过的每种方法都不适用于我)。

我是否必须在 SAML 2.0 POST 请求中发送令牌,如果需要,它在 SAML 结构中的什么位置?

【问题讨论】:

标签: c# single-sign-on kerberos saml-2.0 citrix


【解决方案1】:

这个问题无法回答。我们无法查看您的应用程序、他们的 Intranet 或任何通过网络发送的流量。

许多应用程序依赖 Windows 进行 Kerberos 身份验证(更具体地说是协商),而 Windows 通常透明地执行此操作。在基于浏览器的被动场景中,Web 服务器将提示 401 错误代码和“WWW-Authenticate: Negotiate”标头,浏览器可以理解,并自动使用令牌进行响应。

在基于应用程序的活动场景中,Web 服务可能会以相同的错误代码进行响应,但这通常是提前协商好的,并且应用程序知道手动从 Windows 请求票证。在许多情况下,一些开发框架(如 .NET)也旨在为您自动执行此操作。

这一切都与 SAML 无关,但令牌流基本相同,但需要注意的是,在将 Kerberos 票证交换为 SAML 令牌的地方存在一个额外的跃点。这个额外的跃点是未定义的,由开发人员决定,但在执行 SAMLRequest 时当然可以只是一个请求标头。

【讨论】:

  • 您说某些开发框架(如 .NET)也被设计为自动执行此操作。我正在使用 .NET,并且没有自动发生任何事情。我们发送一个请求并得到一个异常(我们必须捕获)说“401:未经授权”。你有任何例子来说明如何激活这个自动化操作,以及如何正确使用它们(我显然没有)
  • 在 .NET 中有十几种不同的方式来发出 Web 请求。在您获得任何有用的信息之前,您确实需要在您的问题中提供更多详细信息,并且最好提供有关这一切如何工作的代码示例。有太多的方法可以做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
相关资源
最近更新 更多