为了给客户实现这一点,我已经读了很多。我100%肯定我误会了某件事,因为眼下这些事在我脑海中是毫无意义的。
我们的客户希望在我们正在开发的应用程序中添加SSO功能。想法是,在启动时,将程序安装在他们的一个客户上时,应用程序将使用SSO验证用户的身份,以确定是否允许他们运行该程序。
客户在Intranet上有一个终结点,该终结点应该使用用户具有的角色列表来响应我们的SAML请求,我们将对照静态的授权角色列表进行检查,以了解此人是否具有正确的角色权限。
我们应该使用Kerberos令牌。现在,我在线检查的每个页面似乎都在说那部分。最初,我认为我必须以某种方式obtain将该令牌并将其添加到SAML POST请求中的某个位置。
然后,在谷歌搜索如何获取令牌时,我得到more和more的结果表明我不必这样做,它是自动完成的,并且端点知道“谁”在打电话。
此外,most websites assuming是呼叫者(我的应用程序)是Web应用程序,并且教程中的许多步骤都涉及Web.Config和服务器,我都没有。
由于我尝试的所有事情似乎都失败了,并且由于我无法控制端点以检查其工作方式或出了什么问题(我只会得到错误代码),因此我完全迷失了。
所以这个问题是关于将记录弄平。
我的应用程序不基于网络,我不创建或查看响应我请求的端点。
该应用程序在Citrix环境中运行,并且必须与Intranet上的端点进行通信。我本人不在此Intranet上,我们从远程位置登录Citrix以进行测试。
我是否必须在代码中明确获取Kerberos令牌,如果需要,如何获取(我见过的每种方法都不适合我)。
我是否必须在SAML 2.0 POST请求中发送令牌,如果可以的话,它在SAML结构中适合什么地方?
答案 0 :(得分:0)
这个问题无法回答。我们无法查看您的应用程序,其内部网或通过网络发送的任何流量。
许多应用程序都依赖Windows进行Kerberos身份验证(更具体地说是协商),Windows通常透明地执行此操作。在基于浏览器的被动方案中,Web服务器将提示输入401错误代码和“ WWW-Authenticate:Negotiate”标头,浏览器可以理解该标头,并自动以令牌进行响应。
在基于应用程序的活动情况下,Web服务可能会以相同的错误代码进行响应,但是通常会提前进行协商,并且应用程序知道可以从Windows手动请求票证。在某些情况下,.NET之类的某些开发框架也可以自动为您执行此操作。
这与SAML无关,但令牌的流程基本相同,但需要注意的是,还有一个额外的跃点,其中Kerberos票证交换了SAML令牌。此额外的跃点是不确定的,并且要由开发人员确定,但是在执行SAMLRequest时可以肯定只是请求标头。