/ / Jak możemy przeglądać według grup użytkowników z Okta w .NET Core? - asp.net-core, openid-connect, okta

Jak możemy wyświetlać grupy użytkowników z Okta w .NET Core? - asp.net-core, openid-connect, okta

Używam ASP.NET Core MVC dla aplikacji internetowej i przy użyciu zasad do przeglądania stron. Kiedy tworzę wymaganie, jestem w stanie znaleźć wszystkie zwykłe oświadczenia, które pochodzą z OpenID Connect (nazwa, ver, iss, aud, iat itp.), Ale nie grupy, mimo że dodałem grupy w OpenID Połącz konfigurację tokena w Okta.

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;
}

Co muszę zrobić, aby dodać członkostwo grupy użytkowników Okta do oświadczeń obiektu użytkownika?


Aktualizacja:

Zaktualizowałem oprogramowanie pośrednie OpenId, aby uwzględnić grupy w zakresie:

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

i potwierdził, że żądanie serwera do [punktu końcowego Okta] / oauth2 / v1 / token i żądanie klienta do / autoryzacji obejmują grupy, ale nadal nie znalazły grup w roszczeniach.

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli jeszcze tego nie robisz - dodałeś grupy zakres do /autoryzować żądanie? Wygląda na to, że skonfigurowałeś grupy po stronie administratora Okta, ale musisz również poprosić o to klienta.

Jeśli pytasz o zakres grup, musisz rozważyć kilka innych rzeczy:

  1. Czy masz ponad 100 grup, które zostaną zwrócone? Na dole jest notatka roszczenia zależne od zakresu dokument mówiący o tym limicie.

  2. Jeśli potwierdzisz, że składasz wniosekz zasięgiem grup i nadal nie działa - czy możesz sprawdzić identyfikator id_token, który jest zwracany z Okty i sprawdzić, czy zawiera on grupy, czy nie? Jeśli tak, to może to być błąd w sdk .NET (który możemy otworzyć problem).


0 dla odpowiedzi nr 2

FYI 2.0 nie dodaje już wszystkiego od punktu końcowego informacji o użytkowniku z powodu rozdętego pliku cookie. Aby grupy pojawiały się w moich roszczeniach, dodałem to do opcji AddOpenIdConnect ...

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