私はバックエンドにWeb APIを、フロントエンドにはWebアプリと電話アプリを持っています。 私は3つすべてでOAuth/OpenId認証にAuth0を使用しています。 Web APIとWebアプリの両方がASP .Net Core 1.1 MVCで書かれています。WebアプリケーションコントローラですべてのAPI呼び出しでアクセストークンを要求するのは正しいですか?
私は、WebアプリケーションからWeb APIを呼び出すたびに、私はAuth0からのアクセストークンを要求します。したがって、私のAPIへのアクセスを必要とするすべてのコントローラーアクションでは、私は次のことを行います。
var client = new HttpClient();
var tokenResponse = await client.PostAsync(tokenEndpoint,
new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("grant_type", "client_credentials"),
new KeyValuePair<string, string>("client_id", _auth0Settings.ClientId),
new KeyValuePair<string, string>("client_secret", _auth0Settings.ClientSecret),
new KeyValuePair<string, string>("audience", _auth0Settings.ApiIdentifier),
}));
これは正しい方法ですか?または、Webアプリケーションが起動したときにこれを一度実行してから、すべてのコントローラから呼び出すことができるグローバル変数にアクセストークンを格納する必要がありますか?
トークン内の有効期限を使用して有効期限が切れているかどうかをチェックするか、401などの認証エラーの後に新しいトークンを取得する必要がありますか? –
Webアプリケーションから401の後に新しいトークンを取得する必要があります。有効期限はWeb APIでチェックする必要があります。私も少し私の答えを更新しました.. – Stan88