/ / Wie können wir Benutzergruppen von Okta auf .NET Core überprüfen? - asp.net-core, openid-connect, okta

Wie können wir nach Benutzergruppen von Okta auf .NET Core screenen? - asp.net-Kern, openid-connect, okta

Ich verwende ASP.NET Core MVC für eine Webanwendung und Verwendung einer Richtlinie zum Durchsuchen von Seiten. Wenn ich eine Anforderung erstelle, kann ich alle regulären Ansprüche finden, die mit OpenID Connect geliefert werden (Name, Ver, Iss, Aud, Iat usw.), aber keine Gruppen, obwohl ich Gruppen in der OpenID hinzugefügt habe Token-Konfiguration in Okta verbinden.

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options => {
options.AddPolicy("ActionPrivilegeRequired", policy => policy.Requirements.Add(new ActionPrivilegeRequirement()));
});
}

ActionPrivilegeRequirement.cs:

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ActionPrivilegeRequirement requirement)
{
var groupMembership = context.User.FindFirst(
c => c.Type == "groups").Value;

// ...
return Task.CompletedTask;
}

Was muss ich tun, um die Gruppenmitgliedschaft eines Okta-Benutzers zu den Ansprüchen des Benutzerobjekts hinzuzufügen?


Aktualisieren:

Ich habe die OpenId-Middleware aktualisiert, um Gruppen in den Geltungsbereich aufzunehmen:

            OpenIdConnectOptions opts = new OpenIdConnectOptions()
{
//...
};
opts.Scope.Clear();
opts.Scope.Add("openid");
opts.Scope.Add("profile");
opts.Scope.Add("groups");

und bestätigte, dass die Serveranforderung an [Okta-Endpunkt] / oauth2 / v1 / token und die Clientanforderung an / autorisieren, Gruppen einzuschließen, jedoch keine Gruppen in den Ansprüchen gefunden haben.

Antworten:

1 für die Antwort № 1

Wenn Sie das noch nicht tun, haben Sie das hinzugefügt Gruppen Geltungsbereich der /genehmigen anfordern? Es sieht so aus, als hätten Sie die Gruppen auf der Okta-Administratorseite konfiguriert, müssen diese aber auch vom Client anfordern.

Wenn Sie den Gruppenbereich anfordern, sollten Sie einige weitere Punkte beachten:

  1. Haben Sie mehr als 100 Gruppen, die zurückgegeben werden würden? Es gibt eine Notiz am unteren Rand von vom Umfang abhängige Ansprüche doc, der über diese Grenze spricht.

  2. Wenn Sie sich vergewissern, dass Sie die Anfrage stellenmit dem Gruppenbereich, und es funktioniert immer noch nicht - können Sie das von Okta zurückgegebene id_token überprüfen und prüfen, ob es die Gruppen enthält oder nicht? wir können eine Ausgabe für öffnen.


0 für die Antwort № 2

FYI 2.0 fügt nicht mehr alles vom Endpunkt der Benutzerinformationen aufgrund von aufgeblähten Cookies hinzu. Damit Gruppen in meinen Ansprüchen angezeigt werden, habe ich dies den AddOpenIdConnect-Optionen hinzugefügt ...

options.ClaimActions.Add(new CustomJsonClaimAction(ClaimTypes.Role, ClaimTypes.Role, (x) => string.Join(",", x["groups"].Values<string>())));