2017-09-06 13 views
1

Azure ADに登録されている2つのアプリがあります。それらをWebApi1とWebApi2としましょう。Azure ADトークンは既に許可なしで他のアプリにアクセスしています

WebApi1はWebApi2を呼び出す必要があります。トークンを取得するために、WebApi1にシークレットが設定されています。

enter image description here

そして、ここでは私のWebApi2が設定されている方法です:

enter image description here

事をすることをここに私はトークンを取得し、その後WebApi2への呼び出しを行うために使用しているコードがあります私は、WebApi1にAzure(アプリケーション登録ポータル経由で)のアクセス許可を設定していないので、WebApi2が401例外を返すとは思っていません。

ただし、呼び出しは正常に行われ、WebApi1はWebApi2にアクセスできます。

なぜWebApi1がAzureで権限を使用せずにWebApi2にアクセスできるのですか?

+0

設定ファイルの '' AzureAd:Audiences''の値は何ですか? –

+0

その設定には2つのアプリケーションIDが含まれています。最初はもう1つは別の外部アプリ、もう1つはWebApi2のApp IDです。 – Elferone

答えて

0

ウェブAPIアプリケーションは、IsInRole()または[Authorize]属性を使用してアクセスをチェックする必要があります。 Web APIがアクセスをチェックしない場合、デフォルトでアプリケーションロール(アクセス権)のないアクセストークンはWeb APIにアクセスできます。

文書Roles based access control in cloud applications using Azure ADを参照してください。アプリケーションID(クライアントの資格情報フロー)を使用してトークンを取得しているため、文書のAssigning client applications to application roles of resource APIsセクションを確認してください。

+0

まだロールは使用していませんが、API内の各コントローラは[Authorize]属性で装飾されています。 Azureのこれらのすべての権限設定は、ロールを使用してAPIで検証しない限り機能しないことを教えていますか? – Elferone

+0

[Authorize]属性は、Authorize(Roles = "Administrator")のようなロールをチェックしますか? [Authorize]のみの場合は、ロールをチェックしません。 –

0

ちょっと別です。

Azureとロールで作業している場合は、WindowsAzureActiveDirectoryBearerAuthenticationOptionsを設定するときに、IsInRole(またはAuthorRize( "YourRole"))が機能するために適切なロールタイプを設定する必要があります。

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
      new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
      { 
       TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters 
       { 
        ValidateIssuer = false, 
        ValidAudience = ConfigurationManager.AppSettings["AzureAd:Audience"], 
        RoleClaimType = System.Security.Claims.ClaimTypes.Role 
       }, 
       AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active, 
       Tenant = ConfigurationManager.AppSettings["AzureAd:Tenant"], 

      }); 
関連する問題