.net - 从 IdentityServer4 获取 id_token?
问题描述
我对 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 但没有找到太多。
解决方案
如果用户通过了正确的身份验证,那么在 MVC 控制器中,您将能够将用户强制转换为 aClaimsPrincipal
并访问用户的声明:
ClaimsPrincipal user = User as ClaimsPrincipal;
Claim nameClaim = user.FindFirst("name");
string name = nameClaim.Value
推荐阅读
- spring - Spring Boot 和 Spring Cloud 上的服务发现错误
- c# - 在 ASP.net 中创建类似 cURL 的请求
- python - 在 for 循环中不转换到下一个
- vue.js - 导入 nuxtjs 中模块化的 UI 库
- ios - ios:UIPageControl 的垂直位置不明确
- c# - C# Linq 从 ToDictionary 获得不正确的结果
- grails - Grails 3 - 域中的几何类型
- javascript - 数组调整大小性能,设置长度属性与重复推送
- tensorflow - Tensorflow:如何将图像与自定义常量过滤器进行卷积
- javascript - 滚动后我的延迟加载不会加载,我的代码有什么问题?