我正在将OData服务与ACS集成。一切都很好,但当我在Authorization中获得令牌时,头值是加密的。示例(已解码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已加密。如何解密?
您的名称标识符没有加密,而是经过散列处理。不幸的是,LiveID没有发布任何用户声明,除了为每个向其发布代币的受众(在本例中为ACS)哈希的唯一ID。
ACS内置的其他身份提供商确实会发布声明,但要从LiveID获得声明,我认为您需要使用新的Live Connect REST APIhttp://msdn.microsoft.com/en-us/library/live/hh243648.aspx不幸的是,这个LiveID登录API还没有与ACS集成,你必须直接与它交互。
有趣的是,您的名称和名称标识符声明是相同的。您在ACS中是否有将liveID颁发的名称标识符作为名称声明输出的规则?