Как установить swagger клиент утверждает с identityServer4 - PullRequest
0 голосов
/ 11 февраля 2020

Я защищаю. NET Core Web API с токеном доступа, выданным IDS4.

Это работает, и я добавил некоторые претензии в конфигурацию клиента следующим образом:

// ... other code
new Client
{
    ClientId = "apiclient",
    AllowedGrantTypes = GrantTypes.ClientCredentials,
    ClientSecrets = {
        new Secret("mysupersecret".Sha256())
    },
    AllowedScopes = { 
        "joinot", 
        JwtClaimTypes.Role,
    },
    Claims = new List<Claim>() { new Claim("role", "WonderWoman"), new Claim("VatId", "123abc") },
},
// ... other code

Это утверждения, которые я вижу в вебапи.

Я нашел то, что добавил с префиксом "client _".

enter image description here

В целях тестирования я использую сваггер, и у меня есть этот конфиг для него:

new Client {
    ClientId = "swagger_api_client",
    ClientName = "Swagger API Client",
    AllowedGrantTypes = GrantTypes.Implicit,
    AllowAccessTokensViaBrowser = true,
    RedirectUris = {"http://localhost:57303/swagger/oauth2-redirect.html"},
    AllowedScopes = { 
        "joinot", 
        JwtClaimTypes.Role, 
    },
    Claims = new List<Claim>() { new Claim("role", "ManOfSteel"), new Claim("VatId", "abc123") },
    RequireConsent = false
},

Это означает, что мне нужно пройти аутентификацию с интерактивным пользователем, а затем я могу позвонить в webapi.

Когда я это сделаю, утверждения, которые я нашел в Webapi не так, как я ожидал.

"client_role" и "client_VatId" отсутствуют в списке.

enter image description here

Как вставить претензии как к консоли, так и к клиенту swagger?

1 Ответ

1 голос
/ 12 февраля 2020

Можно установить для AlwaysSendClientClaims значение true:

Claims = new List<Claim>() { new Claim("role", "WonderWoman"), new Claim("VatId", "123abc") },
AlwaysSendClientClaims =true,

Если установлено, заявки клиента будут отправляться для каждого потока. Если нет, то только для потока учетных данных клиента (по умолчанию false). Таким образом, ваше консольное приложение, которое использует поток учетных данных клиента, будет работать, даже если не установить это свойство.

Справочный документ: http://docs.identityserver.io/en/latest/reference/client.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...