3

Ich habe eine Service Fabric-Anwendung (Stateless und Statefull) im Service-Fabric-Cluster bereitgestellt. Ich versuche, Sicherheit in den Anwendungen zu implementieren. Die Anwendung verwendet die Active Directory-Authentifizierungsbibliothek (Active Directory Authentication Library, ADAL), um ein Token von Azure AD mithilfe des OAuth 2.0-Clientidentifizierungsdatenflusses abzurufen, wobei es sich bei der Clientberechtigung um ein Kennwort handelt. Ich bin in der Lage, das gleiche Szenario in gewöhnlichen Web-API-Anwendungen zu implementieren, indem ich sie im Azure-Portal registriere. Kann mir jemand sagen, wie man eine Service-Fabric-Microservice-Anwendung mit WebApi, das mit Owin verfügbar gemacht wurde, registriert hat? Ich habe Schwierigkeiten, die Antwort-URL zu registrieren und auf URL zu signieren, da die URLs dynamisch sind (für Statefull Partitionid und Replikat-ID). Ich erhalte unautorisierten Zugang beim Aufruf des entsprechenden Dienstes. Ich bin mir nicht sicher, welche URL für eine zustandsbehaftete oder zustandslose Anwendung registriert werden muss, wenn die Anwendung im azurblauen aktiven Verzeichnis hinzugefügt wird. Könnten Sie mir bitte vorschlagen, wo ich falsch liege und was zu tun wäre.Registrieren von MicroServices in Azure Active Directory (AAD) für Sicherheit

+0

einige Code auf was Sie getan haben, kann helfen. – Peter

+0

Ich befolge die gleichen Schritte, die hier erwähnt werden. [Https://github.com/Azure-Samples/active-directory-dotnet-daemon] Der TodoListService ist hier ein Service, der State-of-the-Art ist, wobei Web-API mit Hilfe von owin im Cloud-Cluster verfügbar gemacht wird . Ich bin mir nicht sicher, wie die Antwort und die Anmelde-URL konfiguriert werden müssen. Ich habe beide Methoden versucht, die vollständige URL und die partielle URL wie unten angegeben, teilweise url: http: // localhost: 8082/SampleMa/ komplette URL: \t http: // localhost: 8082/SampleMa/9ac178c1-0f43- 4c9e-a816-546546e50cea/131250461563590773/688ff0f2-b980-437a-95ec-527645a5d107 –

+0

Dies ist die Konfiguration verwendet, in var y = new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = "testad.onmicrosoft.com" TokenValidationParameters = new System.IdentityModel .Tokens.TokenValidationParameters { SaveSigninToken = true, ValidAudience = "https://testad.onmicrosoft.com/SampleMa" } }; appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication (y); Ich bekomme immer unautorisiert für den entsprechenden Anruf von der Daemon-Konsole app –

Antwort

1

Kann mir jemand sagen, wie man eine Service-Fabric-Microservice-Anwendung mit WebApi, die mit Owin freigelegt wurde, registriert. Ich habe Schwierigkeiten, die Antwort-URL zu registrieren und auf URL zu signieren, da die URLs dynamisch sind (für Statefull Partitionid und Replikat-ID).

Das Client Credential fließen wird für den Dienst oder Daemon app verwendet. Es ist nicht erforderlich, redirect_url zu verwenden, wenn wir den Clientberechtigungsfluss zum Abrufen des Tokens verwenden. Sie können jede validate redirect_url registrieren. Hier ist ein Beispiel, dass die Client-Anmeldeinformationen verwenden:

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 > 

Und es ist das gleiche, das mit Azure AD mit Web-API Azure Service Gewebe zu integrieren. Hier ein Beispiel für Ihre Referenz:

1. registrieren Sie eine Web-App (app1), die zum Schutz der Web-API auf Azure-Portal verwendet wurde

2. Registrieren Sie eine Web-App (app2) als Client, um die Web-API anzufordern

3. Gewähren Sie die App1 der App2 von Portal

4. Erstellen einer Service Fabric-Anwendung mit Stateless Web API Vorlage

5. Konfigurieren Sie die App.config der Service Fabric - Anwendung

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

6. das Paket installieren Microsoft.Owin.Security.ActiveDirectory

Install-Package Microsoft.Owin.Security.ActiveDirectory 

7. Ändern Sie den Code Start unten wie :(Hinweis: Um die MethodeappBuilder.UseWindowsAzureActiveDirectoryBearerAuthenticationvorappBuilder.UseWebApi(config) ist.

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); 
     } 
  1. ausführen, um die Service-Struktur-Anwendung
  2. erwerben, um das Token, um den Client Credential Fluss unter Verwendung von oben genannten (clientId und clientSecret ist von app2)
  3. Anfrage des Service public durch Service Fabric Anwendung mit dem Zugriffstoken und es funktioniert gut
+0

Danke .. Das löste das Problem .. Ich hatte nur ein Fehler. Ich habe appBuilder.UseWebApi (config) nach der azure ad config Registrierung platziert. –

Verwandte Themen