首页 > 解决方案 > 如何将 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 但这已被弃用。

标签: asp.netasp.net-coregoogle-api

解决方案


现在我有以下解决方案并且它有效。

  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"); 如果您想使用真实姓名作为姓名。


推荐阅读