2017-10-26 10 views
0

私は、最終的にSPAになるIdentityServer、Web API、およびMVCClientを持っています。 (.Net Core 2)webapiを使用するIdentityServer AllowAnonymousアクションを設定するにはどうすればよいですか? (WebApi with MVCClient and IdentityServer4)

My MVCClientには、承認されたアクションと許可されていないアクション(またはページ)が混在しています。私は正常に呼び出して、IdentityServerからトークン(サーバからサーバへ)を取得し、それが動作することを検証できました。彼らが提供した例に基づいている以下の行を使用してください。

public async Task<IActionResult> CallApiWithClientToken() 
     { 
      var discovery = await DiscoveryClient.GetAsync("http://localhost:<myport>"); 

      // request token 
      var tokenClient = new TokenClient(discovery.TokenEndpoint, "inventoryApp", "mysecret"); 
      var tokenResponse = await tokenClient.RequestClientCredentialsAsync("invAPIScope"); 

      var client = new HttpClient(); 
      client.SetBearerToken(tokenResponse.AccessToken); 
      var content = await client.GetAsync(_apiUrl + "/testidentity/get"); 

      if (!content.IsSuccessStatusCode) 
      { 
       return new JsonResult(tokenResponse.Error); 
      } 
      else 
      { 
       return new JsonResult(content.Content); 
      } 

     } 

まず問題: しかし、私は試してみて、郵便配達を使用して、トークンを取得し、上記のコードの流れに従うと、それは「無断」エラーをスローします。私は何が間違っているのか分からない。私はちょうど(郵便配達員の)承認オプションからトークンを取得してから、エンドポイントへのコールを取得することが簡単に思えました。

私の目標は、MVCClientにReactを使用する予定のページ(AllowAnonymous)があります。このページはログイン情報を必要としませんが、私のAPI(AllowAnonymous)を呼び出します。しかし、私はapiがmvcclientのために生成されたトークンによって保護されていることを確認したい。したがって、apiは、自分のIdentityServerに登録されていない他の第3のアプリケーションでは使用できません。

私はIdentityServerチームによって提供されたサンプルプロジェクトを見て、それが私のすべてのコードに基づいています。彼らの例について何かを忘れてしまったかどうかは分かりません。 mvcclient側で公開ページ(allowanonymous)をapi呼び出しするトークンが必要な例は見当たりませんでした。

EDITED

は承認属性を否定し、あなたの行動への匿名アクセスを許可する

答えて

0

AllowAnonymous属性それは少し明確にします。しかし、あなたの場合は、あなたのAPIコールをトークンで保護することを望みます。

このページは私のApiを呼び出します。しかし、mvcclient用に生成されたトークンによって保護されていることを確認します。

この呼び出しを行う前に、ユーザーがログインしていることを確認する必要があります。

関連する問題