Stellen Sie einen neuen Anspruch von ChallengeResult() in IdentityServer4 ausC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Stellen Sie einen neuen Anspruch von ChallengeResult() in IdentityServer4 aus

Post by Anonymous »

Wir verfügen derzeit über eine API, die Mandantenfähigkeit erfordert. Nach einer erfolgreichen Anmeldung stellen wir dem Benutzer alle verfügbaren Mandanten zur Verfügung, aber wenn ein Benutzer sich entscheidet, den Mandanten zu wechseln, stoße ich langsam auf Probleme darüber, in welchem Mandantenkontext der Benutzer versucht, auf eine Ressource zuzugreifen.

Mein Gedanke war, dass ich beim Wechsel des Mandanten einfach ein ChallengeResult() anbieten und dies dann in IdentityServer verarbeiten kann, um zu überprüfen, auf welchen Mandanten der Benutzer zugreifen möchte, und dann ein neues Token mit dem Anspruch „ChosenTenant“ (oder etwas Ähnliches) auszustellen das). Etwa so:

Code: Select all

            var authProps = new AuthenticationProperties();
authProps.SetString("CurrentTenantId", response.Result.Id.ToString());
authProps.RedirectUri = "/#home";
return new ChallengeResult(authProps);
Das funktioniert jedoch nicht wirklich, da ChallengeResult nur den IdentityServers-Endpunkt „/connect/authorize“ erreicht und dann an meine Anwendung zurückgegeben wird. Ich habe eine Implementierung von IProfileService in unserem IdentityServer, kann aber nicht auf meine zuvor ausgegebenen AuthenticationProperties zugreifen.

Code: Select all

    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var sub = context.Subject.FindFirst("sub").Value;
context.IssuedClaims = await _userStore.GetClaimsForUser(sub, context.RequestedClaimTypes, context.Client.ClientId);
return;
}
Meine Frage ist dann: Wie kann ich abfangen oder eine eigene interne Logik anwenden, wenn ich auf /connect/authorize drücke?
Oder mache ich das vielleicht falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post