J'ai un Asp.Net Core 2.0 WebApi qui s'authentifie contre AAD:
services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/TENANT.onmicrosoft.com";
options.Audience = "CLIENT_ID";
});
Mon application SPA obtient le jeton d'AAD et l'a envoyé en tant qu'en-tête bearer
. Tout fonctionne bien.
J'ai créé un travail dans Azure Scheduler et configuré Active Directory OAuth
:
Après avoir exécuté un travail, j'obtiens cette erreur: Bearer error="invalid_token", error_description="The audience is invalid"
.
Lorsque je mets options.Audience
Dans AddJwtBearer(...)
sur https://management.core.windows.net/
Le Job fonctionne mais pas le SPA.
Je suppose que je dois définir Audience
sur un tableau ['CLIENT_ID', "https://management.core.windows.net/"]
Mais le options.Audience
Est de type string
. Si je ne mets pas du tout Audience
, Spa et Job ne fonctionnent pas (401 non authentifiés). Régler Audience
sur CLIENT_ID,https://management.core.windows.net/
Ne fonctionne pas non plus.
Existe-t-il un moyen d'activer plusieurs audiences dans AddJwtBearer
?
Je pense avoir rencontré le même problème que vous. Pour que cela fonctionne, j'ai déplacé le public de options
vers TokenValidationParameters
, qui accepte plusieurs entrées. Vérifiez le code ci-dessous:
.AddJwtBearer(options =>
{
options.Authority = "https://login.windows.net/trades.no";
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidAudiences = new List<string>
{
"AUDIENCE1",
"AUDIENCE2"
}
};