Erhalten Sie Zugriff auf die API nach der OIDC-Anmeldung bei der Blazor-Server-AppC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Erhalten Sie Zugriff auf die API nach der OIDC-Anmeldung bei der Blazor-Server-App

Post by Anonymous »

Ich versuche, die Authentifizierung und Autorisierung in einem Szenario zu regeln, in dem ich mehrere Anwendungen habe, und versuche, Cloak zu verwenden, um dies zu verwalten.
Es gibt eine Blazor-Server-App, die die Haupt-Web-API aufrufen muss, um Daten abzurufen und Aktionen usw. auszuführen. Ich habe dies mithilfe eines OIDC-Flows mit aktivierter Client-Authentifizierung und Standard-Flow gesichert. Die Web-API wird mit JWTBearer gesichert.
Beide Dienste können sich unabhängig voneinander authentifizieren und arbeiten, aber ich bin mir nicht sicher, wie ich die beiden dazu bringen kann, miteinander zu kommunizieren. Ich dachte, ich würde eine Art Token-Austausch durchführen, aber ich scheine kein Token zum Austauschen zu haben (zumindest nicht in meinem http-Kontext, ich scheine nicht einmal einen Authentifizierungs-Header zu haben).
Die Authentifizierungskonfiguration für die API ist in der Programmdatei wie folgt:

Code: Select all

builder.Services.AddAuthentication()
.AddJwtBearer(o =>
{
o.RequireHttpsMetadata = false;
o.Audience = builder.Configuration["Authentication:Audience"];
o.MetadataAddress = builder.Configuration["Authentication:MetadataAddress"]!;
o.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = builder.Configuration["Authentication:ValidIssuer"]
};
});
während der Blazor-Server wie folgt aussieht:

Code: Select all

builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "oidc";
})
.AddCookie()
.AddOpenIdConnect("oidc", options =>
{
var oidcConfig = builder.Configuration.GetSection("OpenIDConnectSettings");

options.Authority = oidcConfig["Authority"];
options.ClientId = oidcConfig["ClientId"];
options.ClientSecret = oidcConfig["ClientSecret"];

options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.ResponseType = OpenIdConnectResponseType.Code;

options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;

options.MapInboundClaims = false;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters.NameClaimType = JwtRegisteredClaimNames.Name;
options.TokenValidationParameters.RoleClaimType = "roles";
});
Irgendeine Idee, wie ich sie dazu bringen kann, miteinander zu reden? Ich habe eine Proxy-Dienstklasse, die Anfragen an die API stellen kann, aber ich benötige eine Möglichkeit, eine Authentifizierung zu erhalten, die ich über die Blazor-Authentifizierungs-App an sie anhängen kann, sobald der Benutzer darin authentifiziert ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post