.NET CORE: Aufrufen von Downstreamapi.Callapiforuserasync mit Nicht-Default-Authentifizierungsschema
Posted: 18 Feb 2025, 10:45
Ich füge eine entra id -Authentifizierung zu einer vorhandenen ASP.NET -Kern -Web -App und Web -API mit Standard -Identitätsauthentifizierung hinzu. < /p>
Authentifizierung funktioniert. Aufrufen einer Methode auf meiner API mit Downstreamapi.CallapiForUserasync funktioniert ebenfalls, aber nur, wenn ich OpenID Connect als Standardauth -Schema festlegt.
Wenn es nicht das Standardauth -Schema ist Dann erhalte ich einen Fehler < /p>
Die Cloud -Instanz kann nicht bestimmen. Das bereitgestellte Authentifizierungsschema war ''. Microsoft.Identity.Web 'Abgeleitete' Identität.Application 'als Authentifizierungsschema. > Relevanter Code (mit geänderten Methodennamen mit Variablen und Methodien) - Start -up :
Wenn der Parameter im Aufruf zur AddAuthentication angegeben ist, erhalte ich den oben genannten Fehler.
Authentifizierung funktioniert. Aufrufen einer Methode auf meiner API mit Downstreamapi.CallapiForUserasync funktioniert ebenfalls, aber nur, wenn ich OpenID Connect als Standardauth -Schema festlegt.
Wenn es nicht das Standardauth -Schema ist Dann erhalte ich einen Fehler < /p>
Die Cloud -Instanz kann nicht bestimmen. Das bereitgestellte Authentifizierungsschema war ''. Microsoft.Identity.Web 'Abgeleitete' Identität.Application 'als Authentifizierungsschema. > Relevanter Code (mit geänderten Methodennamen mit Variablen und Methodien) - Start -up :
Code: Select all
builder.Services.AddAuthentication(/*OpenIdConnectDefaults.AuthenticationScheme*/)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(
builder.Configuration.GetSection("X:Scopes").Get()
)
.AddInMemoryTokenCaches()
.AddDownstreamApi("X", builder.Configuration.GetSection("X"));
< /code>
Controller -Methode aufruft API: < /p>
[Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
[AuthorizeForScopes(ScopeKeySection = "X:Scopes")]
public async Task GetSomething()
{
HttpResponseMessage response = await _downstreamApi.CallApiForUserAsync("X", options =>
{
options.RelativePath = "path/Something";
});
...
}