Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

437
Visualizações
Token de portador personalizado principal de asp.net y autorización de token de Azure Ad

Haré todo lo posible para explicar mi pregunta.

actualmente estoy trabajando con un requisito en el que el usuario puede iniciar sesión con el usuario de base de datos local y puede iniciar sesión con Azure AD, con el usuario de base de datos local estoy creando un token personalizado usando el código a continuación.

 public static string GenerateJwtToken(string userId, string userName, string secret) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, userId), new Claim(ClaimTypes.Name, userName) }), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var encryptedToken = tokenHandler.WriteToken(token); return encryptedToken; }

y validando el token con el siguiente código.

 public static IServiceCollection AddJwtAuthentication(this IServiceCollection services, IdentityAppSettings appSettings) { var key = Encoding.ASCII.GetBytes(appSettings.SecretKey); services .AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = false, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); return services; }

y para Azure AD estoy usando el siguiente código en la clase statup.cs

 services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");

appsettings.json

 "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "11121313213213132132", "ClientId": "46853216534163", "Audience": "api://11121313213213132132"

},

pero arroja el siguiente error "El esquema ya existe: Portador"

ahora mi pregunta es cómo podemos usar varios validadores de tokens juntos, y cómo podemos verificar que el token sea válido de uno para que no debamos verificar en otro validador.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Gracias Chaodeng . Publicar sus sugerencias como respuesta para ayudar a otros miembros de la comunidad.

Necesita eliminar servicios de AddAuthentication

Autenticación de Azure AD con el esquema predeterminado de JWT JwtBearerDefaults.AuthenticationScheme

Aquí está la configuración de muestra

 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer("MyAppName",options => { options.Authority = "Value"; options.Audience = "Value"; }) .AddMicrosoftIdentityWebApi(Configuration, "AzureAd");

Aquí está el SO para más información

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda