AADに対して認証しているAsp.Net Core 2.0 WebApiがあります。
_ services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/TENANT.onmicrosoft.com";
options.Audience = "CLIENT_ID";
});
_
SPAアプリはAADからトークンを取得し、bearer
ヘッダーとして送信しました。すべて正常に動作します。
Azure Schedulerでジョブを作成し、_Active Directory OAuth
_をセットアップしました:
ジョブを実行した後、次のエラーが表示されます:_Bearer error="invalid_token", error_description="The audience is invalid"
_。
AddJwtBearer(...)
の_options.Audience
_を_https://management.core.windows.net/
_に設定すると、ジョブは機能しますが、SPAは機能しません。
Audience
を配列_['CLIENT_ID', "https://management.core.windows.net/"]
_に設定する必要があると思いますが、_options.Audience
_はstring
のタイプです。 Audience
をまったく設定しないと、SpaとJobの両方が機能しません(401認証なし)。 Audience
を_CLIENT_ID,https://management.core.windows.net/
_に設定しても機能しません。
AddJwtBearer
で複数のオーディエンスを有効にする方法はありますか?
私はあなたと同じ問題に遭遇したと思います。動作させるために、オーディエンスをoptions
からTokenValidationParameters
に移動しました。これは複数のエントリを受け入れます。以下のコードを確認してください。
.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"
}
};