Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

429
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda