/ / Как можем да преглеждаме по групи потребители от Okta на .NET Core? - asp.net-ядро, openid-connect, окта

Как можем да преглеждаме потребителски групи от Okta на .NET Core? - asp.net-core, openid-connect, okta

Аз използвам ASP.NET Core MVC за уеб приложение и използване на политика за екранни страници. Когато създавам изискване, мога да намеря всички редовни твърдения, които идват с OpenID Connect (име, версия, iss, aud, iat и т.н.), но не и групи, въпреки че добавих групи в OpenID Свържете конфигурацията на символите в 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;
}

Какво трябва да направя, за да добавя членство на потребител на Okta в претенциите на потребителския обект?


Актуализация:

Актуализирах средата на OpenId, за да включим групи в обхвата:

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

и потвърди, че заявката за сървъра до [Okta крайна точка] / oauth2 / v1 / token и клиентската заявка към / оторизиране включват групи, но все още не са открили групи в претенциите.

Отговори:

1 за отговор № 1

Ако вече не правите това - добавихте групи обхват / разреши да поиска? Изглежда, че сте конфигурирали групите от страна на Okta admin, но трябва да го поискате и от клиента.

Ако заявявате обхвата на групите, има и други неща, които трябва да разгледате:

  1. Имате ли повече от 100 групи, които ще бъдат върнати? На дъното има бележка обхват зависими претенции doc, който говори за това ограничение.

  2. Ако потвърдите, че правите заявкатас обхвата на групите, и той все още не работи - можете ли да проверите id_token, който се връща от Okta и да проверите дали включва групите или не? можем да отворим въпрос за).


0 за отговор № 2

FYI 2.0 вече не добавя всичко от крайната точка за информация на потребителя поради нахлуването на бисквитките. За да се показват групите в моите искания, добавих това към опциите на AddOpenIdConnect ...

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