正在尝试通过API获取Google应用程序单一登录签名密钥



当我第一次尝试检索Single Sign-On密钥以更新(创建)它时,从Google Apps管理设置API收到一个有趣的错误。我们只想通过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/#retrieving_the_single_sign-_签名_密钥

我知道我的Auth令牌头在为其他端点工作时设置正确。

有什么想法吗?

更新(和解决方案)

在下面答案的评论部分与周交谈后,发现问题的解决方案如下:

  1. 如果对https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey执行GET请求并收到带有InvalidSsoSigningKey错误的XML响应,请首先确保已通过https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/general端点启用SSO
  2. 如果您确信已启用SSO,但仍收到InvalidSsoSigningKey错误,则可能是因为您尚未上载签名密钥。虽然没有现成的文档,但您可以使用以下格式向https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey执行PUT请求以创建签名密钥:

    <?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. 从现在起,您应该能够成功地向https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey发出GET请求并接收有效的响应。未来的更新将需要使用此GET响应,因为它包含正确的id参数。

我早在2009年就提出了一个问题,请随意加入:

http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=1527

您需要启用SSO才能检索密钥。

是的,这意味着在启用SSO之前无法正确检查密钥匹配。

在执行PUT之前,您不需要执行GET。只需手动创建XML即可。看看GAM是如何做到的:

http://code.google.com/p/google-apps-manager/source/browse/trunk/gdata/apps/adminsettings/service.py#363

相关内容

  • 没有找到相关文章