2016-11-11 2 views
1

У меня есть проект Google App Engine, который предоставляет API через Google Cloud Endpoints. До сих пор все API/конечные точки использовали аутентификацию OAuth2 (и авторизацию), что отлично подходит для «реальных» пользователей.Аннотации Java для авторизации API-ключей в Google Cloud Endpoint?

Теперь я хочу выставить несколько новых API, предназначенных для использования машинами вместо пользователей. Я бы хотел, чтобы эти конечные точки использовали авторизацию API-ключа.

В облачной консоли я создал ключ API (менеджер/учетные данные API).

В Google documentation используется файл yaml для настройки авторизации API-ключа. Тем не менее, я не использую конфигурацию yaml, и она не кажется обычным для приложений Java.

Я бы ожидал, что для Java будут аннотации для авторизации с использованием API-ключей. Однако Google documentation для Java не упоминает ничего подобного.

Можно ли использовать API-ключи в приложении Java с помощью аннотаций? Есть ли другой рекомендуемый способ сделать это?

UPDATE: Кажется, что ключи API работают в Cloud Endpoints 2.0, который находится в бета-версии (ноябрь 2016 г.). Однако CE 2.0 не поддерживается плагином Google Eclipse и требует Maven (которого я сильно не люблю). У меня нет времени переписать мой проект, поэтому на данный момент я добавил дополнительный параметр api_key в свой API, который я проверяю кодом. Обратите внимание, что этот параметр нельзя назвать «ключом», потому что Cloud Endpoint подумает, что это его собственный ключ API, и ответьте, указав, что доступ не настроен.

ответ

2

Да, это возможно. Перейдите на новейший каркас и в @Api, @ApiClass или @ApiMethod используйте поле apiKeyRequired. Мы добавили это недавно, и документы еще не догнали. Извиняюсь!

+0

У Google Eclipse Plugin пока нет (есть) обновление? Похоже, что он застрял в 1.9.34. Или, может быть, мне нужно сначала обновить Eclipse (все еще используя Mars 2)? – rakensi

+0

Только новая инфраструктура поддерживает это, что не поставляется с SDK App Engine. Вам нужны com.google.endpoints, endpoints-framework артефакт. – saiyr

+0

Спасибо, я попробую. – rakensi

1

Вчера у меня была такая же проблема.

Я следовал этому примеру в Java и Maven:

backend

Однако пример не имеет API-ключ авторизации.

Итак, я потратил несколько часов на дешифрование, как добавить авторизацию api-ключа к примеру.

Поскольку в java нет документации о том, как добавить аннотацию api-key в java, я должен был добавить аннотацию вручную в swagger.json.

я редактировал файл swagger.json и добавил:

1) переменной безопасности

"Security": [ 
    { 
    "Api_key": [] 
    } 
    ], 
"You consume": [ 
    "Application/json" 
], 

2) переменной api_key в securityDefinitions

"SecurityDefinitions": { 

"Api_key": { 
    "Type": "apiKey", 
    "Name": "key", 
    "In": "query" 
}, 
    "Google_id_token": { 

Это решило проблему.

После этого я продолжил процесс развертывания в App Engine, который определен в README.мкр пример:

1) gcloud бета-сервис-менеджмент развернуть swagger.json

2) МВН AppEngine: обновление

Я надеюсь, что эта работа вокруг может помочь вам!