最近我花了一些时间研究 AspNet.Security.OpenIdConnect.Server。我使用MVC 示例作为我的客户端/服务器应用程序的代码库。
我现在需要实现的是从外部提供商 (Google) 获取用户的个人资料信息并将信息保存到服务器的数据库中。
获取和保存配置文件信息的正确位置以及实施它的正确方法是什么?
最近我花了一些时间研究 AspNet.Security.OpenIdConnect.Server。我使用MVC 示例作为我的客户端/服务器应用程序的代码库。
我现在需要实现的是从外部提供商 (Google) 获取用户的个人资料信息并将信息保存到服务器的数据库中。
获取和保存配置文件信息的正确位置以及实施它的正确方法是什么?
注意:由于 ASOS ( AspNet.Security.OpenIdConnect.Server
) 仅处理 OAuth2/OpenID Connect 服务器部分,它实际上不涉及身份验证部分,因此不直接处理您配置的外部提供程序。
要实现您想要的,最好的方法是配置 Google 中间件以从用户配置文件响应中返回的用户对象中提取更多信息,并将它们保存在身份验证 cookie 中,以便您以后可以在应用程序代码中检索它们。
app.UseGoogleAuthentication(options => {
options.ClientId = "client_id";
options.ClientSecret = "client_secret";
options.Events = new OAuthEvents {
OnCreatingTicket = context => {
// Extract the "language" property from the JSON payload returned by
// the user profile endpoint and add a new "urn:language" claim.
var language = context.User.Value<string>("language");
context.Identity.AddClaim(new Claim("urn:language", language));
return Task.FromResult(0);
}
};
});
如果响应不包含您需要的数据,则没有什么可以阻止您使用context.Backchannel
另一个 HTTP 调用从不同的 Google 端点检索更多数据。