0

Ich versuche Azure Active Directory-Anmeldeinformationen von einer ASP.NET Core 2.0-Webanwendung an eine ASP.NET Core 2.0-Web-API zu übergeben Die Web-API kann basierend auf den Eigenschaften und Berechtigungen des Benutzers reagieren.Verwenden der Azure Active Directory-Authentifizierung in ASP.NET Core 2.0 von Web App zu Web API

Es gibt, zugegeben, einige Tutorials über diese Technologien in verschiedenen Szenarien und Kombinationen, aber ich habe Probleme gefunden, klare Hilfe speziell für Core 2.0 aufgrund dessen, wie kürzlich es veröffentlicht wurde, und ich Ich vermeide es, zu sehr in irgendwelche der Core 1.x Tutorials zu investieren, da es anscheinend einige bahnbrechende Änderungen gegeben hat (JWT, Authentifizierung, etc.). Ich bin Core völlig neu, also kann ich nicht sagen, was was ist.

Mein Ziel ist es zu ermitteln, wie dies gemäß den Vorschlägen/Standards von Microsoft (falls vorhanden) erfolgen soll. Ich möchte die Komplexität minimieren und die Werkzeuge nutzen, die für dieses Ökosystem entwickelt wurden.


Ich habe sowohl die Web App als auch die Web API in meinem Azure Active Directory registriert. Wenn ich meine Web App debugge, muss ich mich über mein Arbeits-/Schulkonto bei Microsoft anmelden, und das funktioniert wie erwartet.

Das ist alles unmodifizierten von dem, was als Ergebnis meiner Verwendung der Vorlagen erstellt wurde/Assistenten, sondern als Referenz, um loszulegen:

Im Web App:

Startup.cs

public class Startup 
{ 
    public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     // (other unrelated stuff) 

     app.UseAuthentication(); 

     // (other unrelated stuff) 
    } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddAuthentication(sharedOptions => 
     { 
      sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
      sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; 
     }) 
     .AddAzureAd(options => Configuration.Bind("AzureAd", options)) 
     .AddCookie(); 

     services.AddMvc(); 
    } 
} 

Controller/HomeController.cs

[Authorize] 
public class HomeController : Controller 
{ 
    public IActionResult Index() 
    { 
     // **************************************************************** 
     // let's imagine I wanted to call the Web API right here, passing authentication 
     // and whatnot... what should that look like according to this framework? 
     // **************************************************************** 

     return View(); 
    } 

    // (other unrelated actions) 
} 

In dem Web-API:

Startup.cs

public class Startup 
{ 
    public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 

    public IConfiguration Configuration { get; } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     // (other unrelated stuff) 

     app.UseAuthentication(); 
     app.UseMvc(); 
    } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddAuthentication(sharedOptions => 
     { 
      sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; 
     }) 
     .AddAzureAdBearer(options => Configuration.Bind("AzureAd", options)); 

     services.AddMvc(); 
    } 
} 

Antwort

Verwandte Themen