【问题标题】:yammer oauth against external network?yammer oauth 针对外部网络?
【发布时间】:2014-07-28 23:06:07
【问题描述】:

使用 yammer OAuth,是否可以在外部 yammer 网络上注册应用程序,然后针对该外部网络而不是主网络对用户进行身份验证?

更新 9/30/2014 -- 澄清一下,我的目标是使用 yammer oauth 作为我自己(基于 python)应用程序的网关,只允许外部网络的用户进入。

我已经在非 SSO 主要和外部网络组合上进行了这项工作。在外部网络用户通过 yammer 成功登录并重定向到我的回调 url 后,我调用 /networks/current.然后我可以检查目标外部网络 ID 是否出现在他们的列表中,如果是,让他们进入。

当我将我的应用程序切换为使用在启用 SSO 的主网络和非 SSO 外部网络上注册的应用程序的 API 凭据,并尝试使用外部网络用户登录时,事情停止工作。在 yammer 登录过程完成后(注意:yammer 将它们踢出到 SSO 端点并在那里完成登录),并且用户被重定向回我的应用程序,我得到一个 403 forbidden error。该过程永远不会拨打我的电话以获取他们的网络...如果我尝试使用主要用户(启用 SSO 的网络)登录,它可以工作(我的自定义登录失败,因为他们不是正确网络的成员)。

【问题讨论】:

    标签: oauth-2.0 yammer


    【解决方案1】:

    您需要全球化您的 SSO 应用程序才能正常工作。为此,您需要向 Yammer 帮助台提出请求。

    【讨论】:

    【解决方案2】:

    我最近尝试了相同的实现,但没有成功,因为与外部网络的访问令牌相关联的用户 ID(经过身份验证的用户)是家庭网络的用户 ID。我通过以下方式解决了它:

    1. 打开 Chrome
    2. 登录外网
    3. 右键 -> 检查元素
    4. 点击网络标签
    5. 刷新页面
    6. 双击任何包含“…./api/v1/…”的行
    7. 单击侧面板中的标题选项卡
    8. 令牌在“Authorization: Bearer ...”中找到

    然后您可以在 REST request header 中传递该不记名令牌

    注意:我的是启用 SSO 的网络,因此您的里程可能会有所不同 :)

    【讨论】:

    • 感谢您的回复。我已经成功地找到了一种解决方法来实现这一点,但目前我无法让它与启用 SSO 的网络(此应用的生产网络)一起使用。鉴于您有一些 yammer SSO 经验,也许您可​​以对 my issue 有所了解?
    • 对不起,再次阅读您的回复,我可能读错了。您描述的方法当然可以获取令牌。然后我如何使用它来使用 yammer 对我的应用程序用户进行身份验证?请参阅更新后的帖子以了解有关我的应用程序目标的说明。
    • 获得令牌后,您可以使用令牌设置授权标头,如下所示:
    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2011-11-09
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多