Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

428
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!