asp.net - 如何将 asp.net 核心身份验证迁移到新的 Google SignIn 服务?
问题描述
我收到来自 Google 的消息,我必须将 Google+ 身份验证迁移到我的网站的 Google 登录。Google+ 登录已弃用,将于 2019 年 3 月关闭。我找不到任何信息如何使用新的 Google 登录作为 asp.net 核心的身份验证。
Microsoft 提供了本手册 https://docs.microsoft.com/ru-ru/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-2.2 但这已被弃用。
解决方案
现在我有以下解决方案并且它有效。
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
googleOptions.UserInformationEndpoint = "https://openidconnect.googleapis.com/v1/userinfo";
googleOptions.ClaimActions.Clear();
googleOptions.ClaimActions.MapJsonKey(ClaimTypes.Name, "email");
googleOptions.ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_Name");
googleOptions.ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_Name");
googleOptions.ClaimActions.MapJsonKey("urn:google:profile", "profile");
googleOptions.ClaimActions.MapJsonKey(ClaimTypes.Email, "email");
googleOptions.ClaimActions.MapJsonKey("urn:google:image", "picture");
googleOptions.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "sub");
});
你可以写 googleOptions.ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); 如果您想使用真实姓名作为姓名。
推荐阅读
- java - 做While循环麻烦
- python - 无法使用 datetime.datetime 从单元格中提取时间
- flutter - 按下按钮时显示 ListView 小部件
- ios - 用触摸画线
- hash - 如何分配唯一值来表示唯一整数列表
- laravel - Larave,打印查询结果中的所有列
- xquery - XQuery 错误:使用返回空结果的变量进行过滤
- python - 通过 Python 抛出异常从非结构化数据中挖掘细节--> IndexError: list index out of range
- c# - 如何在控制台 WriteLine 中分隔数字?
- r - 如果重复超过 5 次,如何删除行?