【问题标题】:Live Id not returning UserId as Identity Provider in ACS with Thinktecture Authorization ServerLive Id 未在具有 Thinktecture 授权服务器的 ACS 中将 UserId 作为身份提供者返回
【发布时间】:2013-09-10 22:29:08
【问题描述】:

我正在使用 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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 抱歉,那个标签打错了,我只使用 ACS。那么就没有办法从 ACS 获取有关用户的更多信息吗?猜猜我必须得到 IdentityServer (为了使用多个身份提供者)。谢谢!
    • 是的,如果您想完全“拥有”堆栈作为一个开源项目,您可以使用 Identity Server。还有一些服务(比如我从事的服务:developers.auth0.com),您可以将其完全外包。由你决定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2023-02-09
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多