1

私はバックエンドに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アプリケーションが起動したときにこれを一度実行してから、すべてのコントローラから呼び出すことができるグローバル変数にアクセストークンを格納する必要がありますか?

答えて

2

あなたは一度だけ呼び出してトークンを再利用する必要があります。トークンが期限切れになったら、リフレッシュトークンで新しいトークンを要求する必要があります。リフレッシュトークンを使用しない場合は、ユーザーをログインページにリダイレクトして再認証するか、Webアプリケーションで何らかの自動再認証メカニズムを使用する必要があります。

+0

トークン内の有効期限を使用して有効期限が切れているかどうかをチェックするか、401などの認証エラーの後に新しいトークンを取得する必要がありますか? –

+1

Webアプリケーションから401の後に新しいトークンを取得する必要があります。有効期限はWeb APIでチェックする必要があります。私も少し私の答えを更新しました.. – Stan88

関連する問題