我按照官方教程(http://msdn.microsoft.com/en-us/library/hh674475)通过SWT令牌请求交换身份提供商(Facebook)令牌请求ACS令牌。
我尝试了所有可能的事情,我无法摆脱这个错误
ErrorCode:400:SubCode:T1019:Detail:Inavlid SWT token。该 wrap_assertion值不是SWT断言
注意:
如果我做错了事,请纠正我,是的,我搜索了很多关于这一点,但没有找到解决办法!
P.S:我也尝试过使用我的服务标识的密码令牌请求,它运行正常。
答案 0 :(得分:1)
这里有两件事情会失败。
首先,我怀疑Facebook会为您提供有效的SWT令牌。他们只给出了一个被称为“令牌”的字符串。而且这个东西不是一个可以在其他STS-es(如ACS)中用作SWT令牌的有效SWT令牌(我可能在这里错了,因为我不是FB的专家,但由于这些错误,它非常可能我是对的)。因此,如果来自FB的令牌不是有效的SWT令牌,那么您的故事将在此处结束。
接下来就是 - 你正在为你生成SWT令牌。这意味着您现在正在签署令牌。但是你说你需要从Facebook转换一个令牌。那么,你无法用Facebook的签名密钥签署令牌!您正在使用ACS的密钥唱出令牌,这使其无效,因为您将其作为Facebook的令牌呈现。
简而言之 - 您无法以您尝试的方式使用Facebook Graph API令牌。请描述您要解决的更广泛的问题,以便我们提供足够的帮助。
答案 1 :(得分:0)
您的问题是,您似乎直接与Facebook打交道,然后为ACS提供访问令牌。这不是Facebook的ACS模式。基本模型是ACS首先处理Facebook,而不是你的应用程序。这种方式的工作原理是:
ACS不支持您自己获取访问令牌的模型,这似乎就是您要做的事情。