繁体   English   中英

如何在 C# 中使用 ASP.NET Core 连接外部认证服务器

[英]How can I connect with an external authentication server with ASP.NET Core in C#

我正在尝试使用 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。]'

我该如何解决这个问题?

第二个问题:如何从 controller 访问访问令牌,以便能够向 API 用户发送请求?

最好的问候,迈克

[关于如何访问控制器中的用户]

您使用 JWT 令牌吗? 如果是这样,我访问它:

this.HttpContext.User;

然后,如果您还没有修改它,则 jwt 有效负载将分为几个声明。 在我的例子中,默认情况下令牌是有状态的(意味着其中包含用户信息)并且用户 ID 存储在第五个声明中

.Claims.ToList()[5].Value;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM