代码之家  ›  专栏  ›  技术社区  ›  meds

从IdentityServer4获取ID_令牌?

  •  0
  • meds  · 技术社区  · 6 年前

    我对IdentityServer4服务器进行了以下流设置:

        services.AddAuthentication(options =>
            {
                options.DefaultScheme = "Cookies";
                options.DefaultChallengeScheme = "oidc2";
            })
            .AddCookie("Cookies")
            .AddOpenIdConnect("oidc2", options =>
            {
                options.SignInScheme = "Cookies";
    
                options.Authority = "http://localhost:5000";
                options.RequireHttpsMetadata = false;
    
                options.ClientId = "mvc";
                options.ClientSecret = "secret";
                options.ResponseType = "code id_token";
    
                options.SaveTokens = true;
                options.GetClaimsFromUserInfoEndpoint = true;
    
                options.Scope.Add("api1");
                options.Scope.Add("offline_access");
                options.ClaimActions.MapJsonKey("website", "website");
    
            });
    

    很好,用户的身份验证是正确的。

    我想访问响应中的ID_令牌,以便看到用户的显示名称。

    我该怎么做?我看过httpContext.user,但没找到多少。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Richard    6 年前

    如果用户经过了正确的身份验证,那么在MVC控制器中,您可以将用户强制转换为 ClaimsPrincipal 并访问用户的声明:

    ClaimsPrincipal user = User as ClaimsPrincipal;
    Claim nameClaim = user.FindFirst("name");
    string name = nameClaim.Value