使用带有Kerberos令牌的SAML 2.0 SSO的.NET桌面(非网络)应用程序

时间:2018-10-16 23:40:44

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

为了给客户实现这一点,我已经读了很多。我100%肯定我误会了某件事,因为眼下这些事在我脑海中是毫无意义的。

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

客户在Intranet上有一个终结点,该终结点应该使用用户具有的角色列表来响应我们的SAML请求,我们将对照静态的授权角色列表进行检查,以了解此人是否具有正确的角色权限。

我们应该使用Kerberos令牌。现在,我在线检查的每个页面似乎都在说那部分。最初,我认为我必须以某种方式obtain将该令牌并将其添加到SAML POST请求中的某个位置。

然后,在谷歌搜索如何获取令牌时,我得到moremore的结果表明我不必这样做,它是自动完成的,并且端点知道“谁”在打电话。

此外,most websites assuming是呼叫者(我的应用程序)是Web应用程序,并且教程中的许多步骤都涉及Web.Config和服务器,我都没有。

由于我尝试的所有事情似乎都失败了,并且由于我无法控制端点以检查其工作方式或出了什么问题(我只会得到错误代码),因此我完全迷失了。

所以这个问题是关于将记录弄平。

我的应用程序基于网络,我创建或查看响应我请求的端点。

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

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

我是否必须在SAML 2.0 POST请求中发送令牌,如果可以的话,它在SAML结构中适合什么地方?

1 个答案:

答案 0 :(得分:0)

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

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

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

这与SAML无关,但令牌的流程基本相同,但需要注意的是,还有一个额外的跃点,其中Kerberos票证交换了SAML令牌。此额外的跃点是不确定的,并且要由开发人员确定,但是在执行SAMLRequest时可以肯定只是请求标头。