私はAzure ADによって保護されているdotnetコア1.1 Web APIを持っています。私のAngular SPAはadalを使用してユーザーを認証します。バックグラウンドジョブを実行するデーモンアプリケーションもあります。また、Web APIを使用して機能を呼び出したり、データを取得したりします。SPAとデーモンアプリケーション用のjwtトークンの異なるユーザー
これは、マイクロソフトが提供するサンプルに基づいており、hereがあります。
大きな違いは私が別のミドルウェアを使用していることです。私が直面してる問題は、SPAのためアダル経由でADによって生成されたトークンを持っているということです
var authContext = new AuthenticationContext("https://login.microsoftonline.com/##adId##);
var clientCredential = new ClientCredential("##serviceCredenitalKey##", "##serviceCredentialSecret##");
var result = await authContext.AcquireTokenAsync(##webApiUri##, clientCredential);
:APIは、デーモンアプリでJwtBearerAuthentication
.UseJwtBearerAuthentication(new JwtBearerOptions
{
TokenValidationParameters = tokenValParam,
AutomaticAuthenticate = true,
AutomaticChallenge = false,
Authority = String.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAD:Tenant"]),
Audience = Configuration["AzureAd:Audience"],
})
トークンは、次のコードによって作成されている使用していますオーディエンスとしてのクライアントアプリケーションのclientIdデーモンアプリケーション用に生成されたトークンには、視聴者としてのclientIdがなく、代わりにWeb APIのURIがあります。ミドルウェアに複数の有効なオーディエンスを指定する方法はありません。私は自分自身のバリデーターを使うべきですか?これを解決するための機械工が組み込まれているのですか?