Nexttag.Auth.Identity.Google
1.1.2
dotnet add package Nexttag.Auth.Identity.Google --version 1.1.2
NuGet\Install-Package Nexttag.Auth.Identity.Google -Version 1.1.2
<PackageReference Include="Nexttag.Auth.Identity.Google" Version="1.1.2" />
<PackageVersion Include="Nexttag.Auth.Identity.Google" Version="1.1.2" />
<PackageReference Include="Nexttag.Auth.Identity.Google" />
paket add Nexttag.Auth.Identity.Google --version 1.1.2
#r "nuget: Nexttag.Auth.Identity.Google, 1.1.2"
#:package Nexttag.Auth.Identity.Google@1.1.2
#addin nuget:?package=Nexttag.Auth.Identity.Google&version=1.1.2
#tool nuget:?package=Nexttag.Auth.Identity.Google&version=1.1.2
Nexttag.Auth.Identity.Google
Login social com Google para ASP.NET Identity, em cima de Nexttag.Auth.Identity.
Valida o id_token que o cliente (web/mobile) obtém no Google Sign-In, acha-ou-cria o
usuário no Identity e emite um JWT local. Sem Firebase.
Instalação
dotnet add package Nexttag.Auth.Identity.Google
Configuração
// Program.cs — depois de configurar o Identity da Nexttag
builder.Services.AddNexttagIdentity<AppDbContext, AppUser>(builder.Configuration);
builder.Services.AddNexttagGoogleLogin<AppUser>(builder.Configuration);
// appsettings.json — informe os client IDs do OAuth do Google (web/android/ios)
"Google": {
"ClientId": "xxxxx.apps.googleusercontent.com",
"ClientIds": [
"web.apps.googleusercontent.com",
"android.apps.googleusercontent.com"
]
}
Todos os client IDs informados são aceitos como audiência (aud) válida do token.
Segurança (obrigatório): configurar ao menos um Client ID é obrigatório. Sem
ClientId/ClientIds, a validação falha fechado (retorna token inválido) — nunca aceita audiência arbitrária, o que permitiria account takeover com umid_tokende outro app OAuth do Google.Além disso, apenas contas com e-mail verificado pelo Google (
email_verified) são aceitas para login/vínculo/criação — e-mail não verificado é rejeitado (401).
Uso no endpoint
[HttpPost("api/auth/google")]
public async Task<IActionResult> Google(
[FromBody] GoogleLoginRequest body,
IdentityGoogleAuthService<AppUser> auth)
{
var r = await auth.LoginAsync(body.IdToken);
if (!r.IsSuccess)
return Problem(detail: r.Error!.Message, statusCode: r.Error.StatusCode);
return Ok(new { token = r.Value!.Token, novoUsuario = r.Value.NovoUsuario });
}
public record GoogleLoginRequest(string IdToken);
Como funciona
- O cliente faz o Google Sign-In nativo e obtém um
id_token. - Envia o
id_tokenpara a API. IdentityGoogleAuthServicevalida o token no Google (assinatura + audiência viaIGoogleTokenValidator), então:- se já houver login externo Google vinculado → faz login;
- se houver conta com o mesmo e-mail → vincula o Google a ela;
- senão → cria o usuário (
EmailConfirmed = true, sem senha) e vincula o login.
- Emite um JWT local via
IJwtService(mesmo token do login por e-mail/senha).
O vínculo do provedor usa a tabela padrão do Identity (AspNetUserLogins) — nenhum campo
extra é necessário no usuário. IdentityLoginResult.NovoUsuario indica primeiro acesso
(útil para onboarding).
Testabilidade
A validação do token fica atrás de IGoogleTokenValidator (implementação padrão:
GoogleTokenValidator, usando Google.Apis.Auth). Em testes, injete um mock do validador
para exercitar o fluxo acha-ou-cria sem chamar o Google.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Google.Apis.Auth (>= 1.68.0)
- Nexttag.Auth (>= 1.1.0)
- Nexttag.Auth.Identity (>= 1.1.2)
- Nexttag.Auth.Jwt (>= 1.1.2)
- Nexttag.Common (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.