使用 angular-oauth2-oidc 和 Identity Server 4 时无法获取用户名 / given_name

Røy*_*øye 7 identityserver4 angular-oauth2-oidc

我正在关注 angular-oauth2-oidc 文档中的隐式工作流示例。

在我的 Angular 应用程序中一切正常,我可以登录(在此期间我被重定向到身份服务器),获取我的令牌并使用此令牌访问我的 Web Api。

但是,我注意到“given_name”声明为空,因此登录页面上不显示用户名。具体来说,示例代码中的以下方法似乎返回 null:

public get name() {
    let claims = this.oauthService.getIdentityClaims();
    if (!claims) return null;
    return claims.given_name;
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能是权限问题,但我的范围设置为:

scope: 'openid profile email api1',
Run Code Online (Sandbox Code Playgroud)

知道我需要更改什么才能获得此“given_name”声明吗?

小智 2

对于那些遇到同样问题的人。您可以通过在身份提供者端的客户端设置AlwaysIncludeuserClaimsInIdToken=true中添加此行来修复它。

  • @Setrákus Ra - 你能分享一下我如何设置客户端吗? (5认同)
  • @Setrákus Ra - 我可以在哪里添加/配置上面共享代码中的“AlwaysIncludeuserClaimsInIdToken = true”设置..? (3认同)