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

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

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

Итак, на сервере идентификации мы устанавливаем секрет для нашей области ресурса "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, как в коде, но пользователь по-прежнему аутентифицирован, и я могу получить доступ ко всем утверждениям.

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

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


person Hussein Salman    schedule 29.09.2016    source источник


Ответы (1)


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

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

person leastprivilege    schedule 30.09.2016
comment
AFAIK, что секрет не требуется для подтверждения, что токен является доверенным, поэтому можно избежать его использования и обеспечить безопасность системы. В случае, если мне нужно использовать ссылочный токен, зачем мне добавлять секретный ключ, какое это имеет значение для безопасности всей системы, потому что веб-API снова будет связываться с эмитентом для проверки этого токена? - person Hussein Salman; 30.09.2016
comment
Для эталонных токенов - API должен связаться с эмитентом, чтобы подтвердить токен да. lessprivilege.com/2015/11/25/ - person leastprivilege; 03.10.2016