1

我正在将 OData 服务与 ACS 集成。一切正常,但是当我在授权标头值中获得令牌时,它被加密了。示例(它已经被 URL 解码):

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name=mYuAaeTWh6vbXFGCMZPqeTm5dpPnq8e3MaB2cmiwBWQ=&http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier=mYuAaeTWh6vbXFGCMZPqeTm5dpPnq8e3MaB2cmiwBWQ=&http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider=uri:WindowsLiveID&Audience=owl:service&ExpiresOn=1329848740&Issuer=https://wk-owl-access.accesscontrol.windows.net/&HMACSHA256=6Anfv5K47I1e+FkwrnA8/5ZIvlnjfUanFZsDB/p/0J0=

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name这样的声明是加密的。我怎样才能解密它?

4

1 回答 1

1

您的 nameidentifier 未加密,已散列。不幸的是,LiveID 不会发布任何用户声明,除了一个唯一 ID,该 ID 为它向其发布令牌的每个受众(在本例中为 ACS)进行哈希处理。

ACS 中内置的其他身份提供程序确实会发出声明,但要从 LiveID 获取声明,我相信您需要使用新的 Live Connect REST API http://msdn.microsoft.com/en-us/library/live/hh243648。 aspx不幸的是,这个 LiveID 登录 API 尚未与 ACS 集成,您必须直接与它进行交互。

有趣的是您的 name 和 nameidentifier 声明是相同的。您在 ACS 中是否有将 liveID 颁发的名称标识符作为名称声明输出的规则?

于 2012-02-28T17:32:55.493 回答