Аутентификация с помощью ServiceStack и других провайдеров - PullRequest
1 голос
/ 07 апреля 2020

Я заявляю, что использую ServiceStack для аутентификации своих сервисов. Моя проблема заключается в следующем, я разрабатываю два метода аутентификации через учетные данные и через ключ API. Реализация правильная, но я бы хотел, чтобы некоторые сервисы проходили аутентификацию через Credentials, а другие сервисы - через ключ API. Читая документацию, мне показалось, что я понял, что достаточно вставить в атрибут [Authenticate] параметр поставщика, равный свойству Name ссылочного класса Auth (Credentials или API), получив [Authenticated ("apikey")] например. К сожалению, при реализации приведенного выше примера, если я аутентифицируюсь с помощью учетных данных, я могу вызвать сервис, пока я бы хотел, чтобы этот сервис вызывался только через ключ API. Есть ли у вас какие-либо решения? большое спасибо

1 Ответ

1 голос
/ 07 апреля 2020

[Authenticate(provider)] проверит, считается ли пользователь аутентифицированным в соответствии с этим провайдером аутентификации, где он вызывает AuthProviders IsAuthorized(), чтобы проверить, аутентифицирован ли сеанс.

Если вы хотите назначить это Запрос был аутентифицирован с использованием ключа API, который вы можете проверить в своей реализации Сервиса, например:

if (Request.GetSession().AuthProvider != ApiKeyAuthProvider.Name)
    throw HttpError.Forbidden("Must authenticate with API Key");
...