从IdentityServer4获取id_token?

时间:2018-09-11 01:50:01

标签: .net asp.net-mvc oauth-2.0 identityserver4

我对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_token,以便可以看到用户的显示名称。

我该怎么做?我环顾了HttpContext.User,但是却发现不多。

1 个答案:

答案 0 :(得分:1)

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

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