Thinktecture Identity Server 3: секреты клиента для защиты веб-API от несанкционированного доступа

Я использую JS-приложение, идущее через пример кода, и пытаюсь понять, как я могу обеспечить безопасность системы.

AFAIK, секреты, предоставляемые в областях на сервере идентификации, должны быть проверены после того, как токен передан на Resource API Server, чтобы разрешить доступ.

Итак, на сервере идентификации мы устанавливаем секрет для нашей области ресурсов "API", например:

      new Scope
            {
                Name = "api",
                DisplayName = "Access to API",
                Description = "This will grant you access to the API",
                ScopeSecrets = new List<Secret>
                {
                    new Secret("api-secret".Sha256())
                },
                Type = ScopeType.Resource
            },

Находясь в API ресурсов, мы должны проверить, что этот токен был предоставлен доверенным издателем:

  // Wire token validation
        app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "https://localhost:44300",

            ClientId = "api",
            //ClientSecret = "api-secret",
            ClientSecret = "api-secret-changed",

            RequiredScopes = new[] { "api" }
        });

Тем не менее, я изменил ClientSecret, как в коде, но пользователь все еще аутентифицирован, и я могу получить доступ ко всем претензиям.

Итак, как работает секретный механизм проверки токена?

Нужно ли нам также предоставлять секрет на уровне клиента в дополнение к тому, который предоставляется API Scope?

1 ответ

Решение

Секрет в области используется для связи с конечной точкой самоанализа.

Самоанализ используется либо в том случае, если токен является ссылочным токеном, либо если для режима проверки явно установлено значение ValidationEndpoint на промежуточном программном обеспечении проверки токена.

Другие вопросы по тегам