Ошибки проверки области Identity Server 4 - PullRequest
0 голосов
/ 01 декабря 2018

В рамках проекта миграции я пытаюсь заменить устаревший пользовательский API аутентификации на основе jwt, использующий .Net Core / ApiServer.В идеале токены jwt, созданные с помощью нашего нового решения, должны быть близки к токенам, созданным в наследии;в том числе использование областей применения.например, legacy:

{
  "iss": "http://example.com",
  "sub": "api@example",
  "unique_name": "test@api",
  "given_name": "api user",
  "scope": [
    "GET api/balance/{date}",
    "GET api/whoami",
    ...
],
  "role": "12,0,11",
  "client-scope": "test_client",
  "user-scope": [
    "Support",...
  ],
  "aud": "test_client",
  "exp": 1543376516,
  "nbf": 1543376216
}   

наше новое решение почти работает - за исключением областей (глаголы API и конечные точки).Метод, который я использую для их установки:

Первое добавление поддержки в файле startup.cs:

        IdentityServerBuilderExtensionsCrypto
            .AddSigningCredential(services.AddIdentityServer(options =>
            {
                options.IssuerUri = Configuration["Jwt:Issuer"];         

            }), signingKey)
            .AddInMemoryApiResources(InMemoryConfiguration.ApiResources().Result)
            .AddInMemoryClients(InMemoryConfiguration.Clients().Result);

Установка массива ApiRepources в виде списка URLконечные точки

 var resources = new List<ApiResource> {
    new ApiResource("api/balance/{date}"), new ApiResource("api/whoami"), ... 
 };

Установка их в качестве области для клиента

AllowedScopes = ["api/balance/{date}", "api/whoami", ...etc]

При отправке запроса я получаю ошибки invalid_scope, о которых сообщается вlog:

2018-12-02 08: 37: 24.8874 IdentityServer4.Validation.ScopeValidator Запрашиваемая область не разрешена: api / holdings / {date}

Кажется,GET глагол усечен для проверки?Мне удалось получить базовый пример работы с удаленным префиксом GET (или другого глагола), но, к сожалению, нам, вероятно, все еще понадобится это для поддержки существующих приложений.

Кто-нибудь может помочь сообщить, какмы можем заставить это работать?

...