2013-07-03 4 views
0

Я запутался с новым механизмом для обеспечения аутентификации сервера 2 сервера приложений.AppIdentityService для аутентификации appengine 2 appengine

У меня 2 приложения. App1 и App2. App1 взаимодействие с App2 через безопасный спокойный интерфейс.

Интерфейс App2 защищен в web.xml с ролью администратора.

<security-constraint> 
<web-resource-collection> 
<url-pattern>/V3/publish/*</url-pattern> 
</web-resource-collection> 
<auth-constraint> 
<role-name>admin</role-name> 
</auth-constraint> 
</security-constraint> 

Я добавляю идентификатор приложения App1 в список администраторов App2.

, тогда App1 просто вызывает интерфейс, используя идентификатор приложения сервера. по ссылке ниже API идентификации приложения должен помочь мне здесь.

https://developers.google.com/appengine/docs/java/appidentity/

Казалось это работает только для "API Google" приложения, а не другие системы (ie.user Appengine приложений).

Q1. Могу ли я использовать AppIdentityService для вызова другого приложения appengine безопасным способом, используя роль auth_contraint?

всякая помощь приветствуется.

-LP

ответ

1

Вы не можете добавить идентификатор приложения в другой список приложений администратора. (приглашение, которое вы приглашаете, должно принять приглашение).

Вы можете использовать AppIdentityService использовать открытый/закрытый ключ приложения подписать содержание (под управлением Google, включая вращение ключей), см Asserting identity to other systems, а также некоторые примеры кода: Google App Engine Security Module API and JWT support

0

Возможно 'X-Appengine-Inbound-Appid' достаточно для вас , Он задается в App Engine для запросов App Engine и не может быть установлен во внешних запросах.

Мы используем что-то вроде этого в Python:

app_id = self.request.headers.get('X-Appengine-Inbound-Appid', None) 
if app_id not in {'some', 'other'}: 
    logging.warn(u'Callback from strange caller: %s', app_id) 
    .... 
else: 
    .... 
Смежные вопросы