c# - 如何在 C# 中使用 ASP.NET Core 连接外部身份验证服务器
问题描述
我正在尝试使用 Google API 对 ASP.NET Core 进行身份验证,以便能够访问人员 api。
我有以下代码:
services.AddAuthentication()
.AddOpenIdConnect(GoogleDefaults.AuthenticationScheme,
GoogleDefaults.DisplayName,
options =>
{
options.Authority = "https://accounts.google.com/o/oauth2/v2/auth";
options.ClientId = Configuration["Authentication:Google:ClientId"];
options.ClientSecret = Configuration["Authentication: Google:ClientSecret"];
options.ResponseType = OpenIdConnectResponseType.Code;
options.Scope.Add("openid");
options.Scope.Add("email");
options.CallbackPath = "/signin-google";
});
问题是我得到以下异常
处理请求时发生未处理的异常。
IOException:IDX20807:无法从以下位置检索文档:'[PII 被隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII.]'。HttpResponseMessage: '[PII 被隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII.]', HttpResponseMessage.Content: '[PII 已隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII。]'
我该如何解决这个问题?
第二个问题:如何从控制器访问访问令牌以便能够向 People API 发送请求?
最好的问候,迈克
解决方案
【关于如何在控制器中访问用户】
你使用 JWT 令牌吗?如果是这样,我访问它:
this.HttpContext.User;
然后,如果您还没有修改它,jwt 有效负载将分为几个声明。就我而言,默认情况下,令牌是有状态的(意味着其中包含用户信息),并且用户 ID 存储在第五个声明中
.Claims.ToList()[5].Value;
推荐阅读
- css - 在 Django 模板中将 12,34 转换为 12.34 以用于 css 目的
- python - 多次递归地对 np 数组进行切片有什么惩罚吗?
- javascript - 引导程序中的模态背景淡入淡出显示
- javascript - 如何在 stockfish.js 中使用 FEN 字符串设置位置?
- javascript - 为什么 getByRole 找不到带有 aria-label 的按钮?
- c# - 即使gridview为空也显示gridview的页眉和页脚并且在空gridview中不显示任何记录消息
- cadence-workflow - Cadence Service 是否提供任何健康检查 API 端点
- rust - 是否有一种方法可以使 Err 上的函数短路,例如 SQL 的 ifnull 或 coalesce?
- java - 如何从 firebase 实时数据库中获取数据并将其显示在微调器上
- spring - 更新到最新版本后替换 @EnableSwagger2