0

我正在使用 Thinktecture 的授权服务器,连接了 ACS,并将 LiveID 作为身份提供者。它可以工作,但 JWT 看起来像(注意 nameid 声明):

{
"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

关于什么可能是错误或配置错误的任何想法?

4

1 回答 1

0

ACS 不会为经过 LiveId 身份验证的用户提供电子邮件或“全局用户 ID”。它为您提供对特定用户和 ACS 命名空间唯一的标识符。所以保证认证用户是返回用户_,仅此而已。

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

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

于 2013-09-10T23:50:58.630 回答