Live ID不会在具有Thinktecture授权服务器的ACS中将UserId作为身份提供者返回

时间:2013-09-10 22:29:08

标签: asp.net-web-api acs liveid

我正在使用Thinktecture的授权服务器与ACS连接,LiveID作为身份提供商。它有效,但JWT看起来像(注意名字声称):

{
"aud": "urn:mygym",
"iss": "https://my-gym.accesscontrol.windows.net/",
"nbf": 1378851574,
"exp": 1378852174,
"nameid": "MjApoxNfAaXXXXXXXXXXXXXdBi7lqd4sjd6j0=",
"identityprovider": "uri:WindowsLiveID"
}

这是在我的自定义JWT令牌处理程序中捕获的,所以它直接来自ACS。 “nameid”声明应该是Live ID UserId,但它不是,看起来像base64编码的字符串,但它只是解码为随机字符。我需要获取UserId以获取用户的公开信息,如https://apis.live.net/v5.0/8c8ce076ca27823f中所示。

任何可能出错或未配置的想法?

1 个答案:

答案 0 :(得分:0)

ACS不会为LiveId经过身份验证的用户提供电子邮件或“全局用户ID”。它为您提供了特定用户和ACS名称空间唯一的标识符。因此,保证经过身份验证的用户是返回用户 _,这就是全部。

您可能想要检查连接到LiveID的其他方式(例如,使用可提供更多控制权的OAuth端点)。

  

注意:如果您使用的是Identity Server,则可能根本不需要ACS ...