Попытка получить ключ подписи единого входа в Службах 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/

Я точно знаю, что мои заголовки токенов аутентификации установлены правильно, так как они работают для других конечных точек.

Есть идеи?

Обновление (и решение)

После разговора с Джеем в разделе комментариев приведенного ниже ответа выясняется, что решение проблемы заключается в следующем:

  1. Если вы выполняете запрос 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 конечная точка.
  2. Если вы уверены, что вы включили единый вход и все еще получаете 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>
    
  3. Отныне вы сможете успешно отправлять запросы 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

Другие вопросы по тегам