Почему SerializeTicket () возвращает токен со всеми областями, которые ресурс позволяет клиенту - PullRequest
0 голосов
/ 18 июня 2019

Используя AspNet 4.6.2 для генерации токенов доступа, используя любой поток аутентификации (пробовал Поток кода, Неявный поток, Поток учетных данных клиента), используя класс AuthenticationTokenCreateContext из Microsoft.Owin.Security.Infrastructure, я наблюдал странное поведение.

Мы внедрили сервер аутентификации, где ресурсы позволяют клиентам запрашивать определенные области, однако токен всегда возвращается со всеми областями, которые клиент может запросить у этого ресурса.

Соответствующийкод:

var accessTicket = new AuthenticationTicket(new ClaimsIdentity(identity), new AuthenticationProperties());

accessTicket.Properties.SetTicketType("access_token");
accessTicket.Properties.IssuedUtc = nowUtc;
accessTicket.Properties.SetNotBeforeUtc(nowUtc);
accessTicket.Properties.ExpiresUtc = nowUtc.Add(Options.AccessTokenLifetime);
accessTicket.Properties.SetClientId(clientId);
accessTicket.Properties.SetResource(resource);
accessTicket.Properties.SetTokenId(Guid.NewGuid().ToString());
accessTicket.Properties.SetScope(scope);

var accessTokenCreateContext = new AuthenticationTokenCreateContext(Context, Options.AccessTokenFormat, accessTicket);

await Options.AccessTokenProvider.CreateAsync(accessTokenCreateContext);

var accessToken = accessTokenCreateContext.Token;

if (string.IsNullOrEmpty(accessToken))
{
    accessToken = accessTokenCreateContext.SerializeTicket();
}

После создания accessTokenCreateContext.Ticket.Properties.GetScope() возвращает ожидаемую область, но затем, когда (JWT) accessToken создается с помощью метода SerializeTicket(), токен имеет все области, которые клиентможет запросить у ресурса.

Почему этот метод сериализует заявку с областями, которых нет в заявке?

1 Ответ

0 голосов
/ 21 июня 2019

Это просто недоразумение моей IDE. Я не осознавал, что VisualStudio не вмешивался в некоторые методы, и я воспринимал это как должное, поскольку видел, что он шагает в другие.

Урок для меня: нужно научиться лучше использовать мои инструменты.

...