3

のためのAzureのActive Directory(AAD)で、私はサービス・ファブリック・クラスタにデプロイサービス・ファブリック・アプリケーション(ステートレスとステートフル)を持っています。私はアプリケーションにセキュリティを実装しようとしています。アプリケーションは、Active Directory認証ライブラリ(ADAL)を使用して、クライアント認証情報がパスワードであるOAuth 2.0クライアント認証情報フローを使用してAzure ADからトークンを取得します。 Azureポータルに登録することで、通常のWebアプリケーションで同じシナリオを実装できます。 Owinを使用して公開されたWebApiでサービスファブリックマイクロサービスアプリケーションを登録する方法を教えてもらえますか?私は、URLが動的であるので(statefullのpartitionidとreplica idのために)、返信urlを登録してURLに署名するのが難しいです。私は、対応するサービスを呼び出す際に不正アクセスを受けます。 azureのアクティブディレクトリにアプリケーションを追加するときに、ステートフルまたはステートレスアプリケーションのURLを登録する必要があるかどうかはわかりません。私が間違っている箇所や実装するべきことを教えてください。登録MicroServicesセキュリティ

+0

あなたが行ったことのいくつかのコードは助けることができます。 – Peter

+0

私はここで述べたのと同じ手順に従っています。[https://github.com/Azure-Samples/active-directory-dotnet-daemon]ここでTodoListServiceはクラウドクラスターにデプロイされたowinを使って公開されたweb APIを使って、 。私は、返信とサインオンのURLを設定する必要があるかどうかはわかりません。私は以下のように完全なURLと部分的なURLを提供する方法を試しました 部分URL:http:// localhost:8082/SampleMa/ 完全なURL:\t http:// localhost:8082/SampleMa/9ac178c1-0f43- 4c9e-a816-546546e50cea/131250461563590773/688ff0f2-b980-437a-95ec-527645a5d107 –

+0

この {テナント= "testad.onmicrosoft.com" するvar Y =新規WindowsAzureActiveDirectoryBearerAuthenticationOptionsに使用される構成であり、 TokenValidationParameters =新しいSystem.IdentityModel .Tokens.TokenValidationParameters { SaveSigninToken = true、 ValidAudience = "https://testad.onmicrosoft.com/SampleMa" } }; appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(y); デーモンコンソールアプリケーション –

答えて

1

Owinを使用して公開されたWebApiでサービスファブリックマイクロサービスアプリケーションを登録する方法を教えてもらえますか。私は、URLが動的であるので(statefullのpartitionidとreplica idのために)、返信urlを登録してURLに署名するのが難しいです。

クライアント資格フローは、サービスまたはデーモンアプリで使用されます。 クライアント資格フローを使用してトークンを取得する場合は、redirect_urlを使用する必要はありません。任意のvalidate redirect_urlを登録できます。ここでは、クライアントの資格情報を使用している例である:

POST https://login.microsoftonline.com/<tenantId>/oauth2/token HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 

grant_type=client_credentials 
&client_id=<clientId> 
&client_secret=<clientSecret> 
&resource=<app id uri of your web api > 

をそして、Azureのサービスの生地を使用してWeb APIとAzureのADと統合することと同じです。

1:ここではあなたの参照のための一例です。 AzureポータルでWeb APIを保護するためのWebアプリケーション(app1)を登録してください

2ウェブAPI

3を要求するクライアントとしてWebアプリケーション(APP 2)を登録。ポータル

4からAPP2するAPP1を付与します。 ステートレスWeb APIテンプレート

5でサービスファブリックアプリケーションを作成します。サービスファブリックアプリケーションのapp.configを設定します。

<add key="ida:Audience" value="app id Uri of app1" /> 
<add key="ida:Tenant" value="tenantId" /> 

6。パッケージにMicrosoft.Owin.Security.ActiveDirectory

Install-Package Microsoft.Owin.Security.ActiveDirectory 

7をインストールするには、以下のようなスタートアップコードを変更:(注:メソッドappBuilder.UseWindowsAzureActiveDirectoryBearerAuthenticationappBuilder.UseWebApi(config)の前にあります。

public static void ConfigureApp(IAppBuilder appBuilder) 
     { 
      // Configure Web API for self-host. 
      HttpConfiguration config = new HttpConfiguration(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

      appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
       new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
       { 
        Audience = ConfigurationManager.AppSettings["ida:Audience"], 
        Tenant = ConfigurationManager.AppSettings["ida:Tenant"], 
        TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters 
        { 
         ValidateIssuer = false 
        } 
       }); 

      appBuilder.UseWebApi(config); 
     } 
  • サービス・ファブリックアプリケーションを実行 上記クライアント資格フロー使用トークン(のclientId及びclientSecretはAPP2からである)を取得
  • 要求サービス公衆によってアクセストークンを持つサービスファブリックアプリケーションとそれはうまく動作します
  • +0

    ありがとう..それで問題は解決しました。間違い。私は、紺碧広告の設定登録後にappBuilder.UseWebApi(con​​fig)を配置しました。 –

    関連する問題