3

我在Service fabric集羣中部署了服務結構應用程序(無狀態和全狀態)。我正試圖在應用程序中實現安全性。該應用程序使用Active Directory認證庫(ADAL)從Azure AD使用OAuth 2.0客戶端憑證流獲取令牌,其中客戶端憑證是密碼。我可以在普通的web api應用程序中通過在Azure門戶中註冊它們來實現相同的場景。任何人都可以告訴我如何註冊使用Owin公開的WebApi的服務結構微服務應用程序。由於網址是動態的(對於有狀態的分區ID和副本ID),我在註冊回覆URL和登錄URL時遇到困難。我在調用相應的服務時收到未經授權的訪問。我不確定在azure活動目錄中添加應用程序時,需要爲有狀態或無狀態應用程序註冊哪些url。你能否告訴我我錯在哪裏以及如何實施。在Azure Active Directory(AAD)中註冊MicroServices以實現安全

+0

有關您所做的一些代碼可以提供幫助。 – Peter

+0

我遵循這裏提到的相同步驟[https://github.com/Azure-Samples/active-directory-dotnet-daemon]這裏的TodoListService是一個服務結構statefull服務,使用部署在雲集羣中的owin展示web api 。我不確定回覆和登錄url的配置。我嘗試了提供完整網址和部分網址的方法,如下所示, 部分網址:http:// localhost:8082/SampleMa/ 完整網址:\t http:// localhost:8082/SampleMa/9ac178c1-0f43- 4c9e-a816-546546e50cea/131250461563590773/688ff0f2-b980-437a-95ec-527645a5d107 –

+0

這是 VAR Y =新WindowsAzureActiveDirectoryBearerAuthenticationOptions { 租戶= 「testad.onmicrosoft.com」 中使用的配置, TokenValidationParameters =新System.IdentityModel .Tokens.TokenValidationParameters { SaveSigninToken = true, ValidAudience =「https://testad.onmicrosoft.com/SampleMa」 } }; appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(y); 我總是收到來自守護進程控制檯應用程序 –

回答

1

任何人都可以告訴我如何註冊一個服務結構微服務應用程序WebApi暴露使用歐文。由於網址是動態的(對於有狀態的分區ID和副本ID),我在註冊回覆URL和登錄URL時遇到困難。

客戶端憑證流程用於服務或守護程序應用程序。當我們使用客戶端憑證流來獲取令牌時,不需要使用redirect_url。你可以註冊任何驗證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 > 

它是相同的是與使用天青服務織物網API天青AD集成。以下是供您參考的示例:

1。註冊用於保護Azure門戶上的Web API的Web應用程序(app1)

2。註冊一個Web應用程序(app2)作爲客戶端以請求Web API

3。將門戶網站app1授予app2

4。使用創建服務結構應用程序無狀態Web API模板

5。配置Service Fabric應用程序的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

    謝謝..解決了這個問題..我只有一個失誤。我在Azure廣告配置註冊後放置了appBuilder.UseWebApi(con​​fig).. –