我对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,但是却发现不多。
答案 0 :(得分:1)
如果用户通过了正确的身份验证,则可以在MVC控制器中将用户强制转换为ClaimsPrincipal
并访问用户的声明:
ClaimsPrincipal user = User as ClaimsPrincipal;
Claim nameClaim = user.FindFirst("name");
string name = nameClaim.Value