Identity Server 4 Защита API - PullRequest
       8

Identity Server 4 Защита API

0 голосов
/ 19 ноября 2018

Я пытаюсь использовать Identity Server 4 для защиты моего API.Сейчас я просмотрел всю документацию на http://docs.identityserver.io/en/release/quickstarts/1_client_credentials.html и настроил несколько успешных демонстраций.Однако есть одна вещь, которую я не понимаю.

Например, во-первых, нам нужно определить клиент на IS4, который выглядит следующим образом:

new Client
{
    ClientId = "client",

    // no interactive user, use the clientid/secret for authentication
    AllowedGrantTypes = GrantTypes.ClientCredentials,

    // secret for authentication
    ClientSecrets =
    {
        new Secret("secret".Sha256())
    },

    // scopes that client has access to
    AllowedScopes = { "api1" }
}

Затем в API мы защищаем его, добавляя пакет IdentityServer4.AccessTokenValidation и добавляяКонфигурация в startup.cs

services.AddMvcCore()
    .AddAuthorization()
    .AddJsonFormatters();

services.AddAuthentication("Bearer")
    .AddIdentityServerAuthentication(options =>
    {
        options.Authority = "http://localhost:5000";
        options.RequireHttpsMetadata = false;

        options.ApiName = "api1";
    });

И, наконец, мы добавляем app.UseAuthentication();

Теперь все это работает при запуске, однако часть, которую я не понимаю, это где находитсяСекрет определен в API.Как видите, клиент явно ожидает секрет, но я нигде не определяю этот секрет в своем API.Я также нигде не определяю в IS4 что-либо о моем API, чтобы сказать, что вы защищаете API от этого URI или чего-то в этом роде.

Так как же это на самом деле работает с точки зрения IS4, зная оAPI и аутентификация его запросов?

РЕДАКТИРОВАТЬ:

Чтобы прояснить некоторую путаницу, да, есть клиент, который я отключил в коде выше, и теперь я вижу, что я не должен, и тамЯ предоставляю секрет, но я все еще не понимаю, как IS4 знает, как защитить мой конкретный API.Что делать, если запрос пришел с www.somerandomapi.com?Из того, что я читаю, это будет работать независимо. Исходя из того, что вы написали, имеет смысл, что клиент передает секрет, но нигде в моем коде IS4 не сказал, какой API защищать.

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