В настоящее время работает с WSO2 API Manager версии 2.2.0. Это очень хорошо с реализацией OAuth 2.0.
Когда мы определяем новое приложение через WSO2 API Store, мы можем сгенерировать Ключ и Секрет потребителя и выбрать Тип предоставления для создания токена доступа. После этого мы должны подписаться на API с некоторым уровнем подписки.
Токен доступа (также называемый ключом API) затем авторизуется во время вызова API. Токен доступа связан с атрибутами, которые затем помещаются в AuthenticationContext
, например, следующий фрагмент из org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.java
:
APIKeyValidationInfoDTO info;
info = keyValidator.getKeyValidationInfo(apiContext, apiKey, apiVersion, authenticationScheme, clientDomain,
matchingResource, httpMethod, defaultVersionInvoked);
if (info.isAuthorized()) {
AuthenticationContext authContext = new AuthenticationContext();
authContext.setAuthenticated(true);
authContext.setTier(info.getTier());
authContext.setApiKey(apiKey);
authContext.setKeyType(info.getType());
authContext.setUsername(info.getEndUserName());
authContext.setCallerToken(info.getEndUserToken());
authContext.setApplicationId(info.getApplicationId());
authContext.setApplicationName(info.getApplicationName());
authContext.setApplicationTier(info.getApplicationTier());
authContext.setSubscriber(info.getSubscriber());
authContext.setConsumerKey(info.getConsumerKey());
APISecurityUtils.setAuthenticationContext(synCtx, authContext, securityContextHeader);
Это работает отлично, но теперь я хотел бы иметь свой собственный обработчик аутентификации, который основан не на маркере доступа, а на сертификатах X.509, где CN будет моей идентификацией объекта ( Запись пользовательского Обработчики ).
А также я хотел бы воспользоваться преимуществами параметров приложения и уровней подписки, чтобы управлять такими атрибутами для различных объектов, вызывающих API-интерфейсы с использованием сертификата X.509. Использование вышеупомянутого вызова не работает, потому что у меня нет apiKey
.
Я пытаюсь найти способ получения данных API приложения с идентификацией из сертификата X.509 вместо токена доступа для установки уровня подписки и других атрибутов AuthenticationContext
.
Какие-либо предложения, это может быть сделано?