Попытка получить ключ подписи единого входа в Службах Google через API
Я получаю интересную ошибку от API настроек администратора Служб Google при попытке получить ключ единого входа для его обновления (создания) в первый раз. Мы собираемся сделать это только через API, но кажется, что API делает предположение, что ключ подписи уже был создан на стороне клиента. Следующий запрос GET не выполняется с ошибкой ниже:
GET https://apps-apis.google.com/a/feeds/domain/2.0/ruby-alphaz.co/sso/signingkey
Ошибка ответа выглядит следующим образом:
SimpleXMLElement Object
(
[error] => SimpleXMLElement Object
(
[@attributes] => Array
(
[errorCode] => 1408
[invalidInput] =>
[reason] => InvalidSsoSigningKey
)
)
)
Я могу обновить параметры единого входа без проблем, но конечная точка ключа подписи вызывает проблемы. Чтобы было ясно, в настоящее время не существует ключа подписи для домена, но инструкции домена должны попытаться получить XML через конечную точку, чтобы убедиться, что для него задан правильный параметр id, чтобы я мог выполнить последующий ответ PUT для создания / обновления. ключ подписи.
Документация, за которой я следую, как здесь:
https://developers.google.com/google-apps/admin-settings/
Я точно знаю, что мои заголовки токенов аутентификации установлены правильно, так как они работают для других конечных точек.
Есть идеи?
Обновление (и решение)
После разговора с Джеем в разделе комментариев приведенного ниже ответа выясняется, что решение проблемы заключается в следующем:
- Если вы выполняете запрос GET
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey
и получить ответ XML сInvalidSsoSigningKey
Ошибка, сначала убедитесь, что вы включили единый вход черезhttps://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/general
конечная точка. Если вы уверены, что вы включили единый вход и все еще получаете
InvalidSsoSigningKey
ошибка, скорее всего, потому что у вас еще нет загруженного ключа подписи. Хотя это не легко документировано, вы можете выполнить запрос PUT дляhttps://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey
в следующем формате для создания ключа подписи:<?xml version="1.0" encoding="UTF-8"?> <atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006"> <apps:property name="signingKey" value="[YOUR_BASE64_ENCODED_CERTIFICATE_VALUE]" /> </atom:entry>
Отныне вы сможете успешно отправлять запросы GET на
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey
и получите действительный ответ. Будущие обновления должны будут использовать этот ответ GET, поскольку он содержит надлежащиеid
параметр.
1 ответ
Я подал вопрос об этом еще в 2009 году, не стесняйтесь, чтобы пометить его:
http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=1527
Вам нужно включить единый вход, чтобы получить ключ.
И да, это означает, что вы не можете проверить соответствие ключей перед включением единого входа.
Вам не нужно делать GET, прежде чем делать PUT. Просто создайте XML вручную. Посмотрите, как GAM это делает:
http://code.google.com/p/google-apps-manager/source/browse/trunk/gdata/apps/adminsettings/service.py