1

语境:

我已经在我的应用程序中实现了 OpenIddict,基于GitHub 自述文件。我目前使用 TokenEndpoint 来登录用户。

services.AddOpenIddict<ApplicationUser, UsersDbContext>().EnableTokenEndpoint("/api/Account/Login")

尽管调用/api/Account/Info有效并且它返回令牌作为响应,但我需要获取一些有关登录用户的基本数据(用户名、电子邮件、帐户类型)。来自令牌端点的响应没有提供。

我发现了类似 UserinfoEndpoint 的东西:

.EnableUserinfoEndpoint("/api/Account/Info")

但是我在http响应中看到的是:

{
  "sub": "ea2248b4-a[...]70757de60fd",
  "iss": "http://localhost:59381/"
}

这应该给我一些回报Claims。由于它不返回任何内容,我假设Identity Claims在令牌生成期间没有创建任何内容。

简而言之,我需要知道的:

  1. 是否使用令牌端点正确的方式登录用户?
  2. 我需要自己生成索赔吗?
  3. 我可以自己控制索赔吗?如何控制?
  4. 如何通过 UserInfoEndpoint 使某些声明可见?
4

1 回答 1

1

是否使用令牌端点正确的方式登录用户?

是的。

我需要自己生成索赔吗?

userinfo 端点只是公开存储在访​​问令牌中的令牌(将来可能会改变)。

我可以自己控制索赔吗?如何控制?如何通过 UserInfoEndpoint 使某些声明可见?

要允许 userinfo 端点返回更多声明,您必须请求更多范围。阅读http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims了解更多信息。

在未来的版本中,我们可能会允许您返回自定义声明,但目前不支持。

于 2016-08-24T17:02:30.440 回答