0

有谁知道为什么我们的 Weebly 应用清单中以下条目中的 :jwt 没有被替换?

“callback_url”:“ https://www.mymobileapp.online/home/index?vendorId=Weebly&:jwt

我看到的传入请求是:

https://www.mymobileapp.online/home/index?vendorId=Weebly&:jwt?user_id=62581379×tamp=1479434021&site_id=163706648712782041&hmac=...our_hmac...&version=1.0.0&callback_url=https%3A%2F%2Fwww.weebly .com%2Fapp-center%2Foauth%2F授权

因此,如您所见,':jwt' 仍然存在,并且 Weebly 在其后附加了它的查询字符串操作数和参数。

我已经阅读了下面页面上的“为 OAuth 配置清单”部分,据我所知,我正在正确配置清单。我错过了什么?

https://dev.weebly.com/configure-oauth.html

4

3 回答 3

1

到现在为止,您可能已经想通了,但是您的 callback_url一开始就不应该有 :jwt .. 问题已解决;)

如果用户可以管理应用程序/设置,那么您将使用 manage_app_url。然后在您为 manage_app_url 设置的网站页面上,您将监听 jwt。(那么您也可以使用“oauth_final_destination”:“manage”,如果您希望它们在安装后最终出现在您的网站上)请参阅:https://dev.weebly.com/how-users-manage-your-app。 html

**编辑另见:https ://dev.weebly.com/sso-with-jwt.html **

因此,例如,使用 PHP,您可以在站点的 manage_app_url 页面上执行以下操作:

if (isset($_GET['jwt'])) {
   $app_client_id = "Your APP ID";
   $client_secret = "Your APP SECRET";
   $jtw = $_GET['jwt'];

   /**
   * You can add a leeway to account for when there is a clock skew times between
   * the signing and verifying servers. It is recommended that this leeway should not be bigger than a few minutes.
   * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef
   */

   try {
     JWT::$leeway = 60; // $leeway in seconds
     $decoded = JWT::decode($jtw, $client_secret, array('HS256'));
     if (!empty($decoded)) {
         $decoded_array = (array) $decoded;
         // Continue with your websites code to verify the Weebly users info
     }
   }
} // END IF ISSET JWT
于 2016-12-01T21:30:27.210 回答
0

尽管此响应是正确的,但我认为原始帖子已关闭,因为它使用 :jwt 的 manage_app_url

我有同样的问题,但发现它在作为草稿应用程序安装时不起作用,但是,通过应用程序界面访问“管理应用程序”链接,它是正确的。即,将 :jwt 替换为正确的 url。

所以问题在于安装草稿应用程序,而不是通过正面界面实际管理应用程序

于 2017-01-29T15:40:17.497 回答
0

杰弗瑞,先生,您说的完全正确。我只是将其添加为一个答案,以扩展您的一些其他安全建议,Weebly 认为最佳实践

开发人员需要实现JWT“JSON Web Token”的主要用例是(有关更多详细信息,请参阅上面 Jeffery 答案中的链接):

  • 根据要在 Weebly(外部服务)之外定义/存储/操作的配置/设置参数,为 Weebly 应用程序提供用户上下文数据
  • SSO(单点登录)支持

:jwt包含在 URL 中的两种方式

您的 Weebly 应用manifest.json文件可能包含触发 Weebly 为您提供 JWT 的 URL:

  • manage_app_url
  • element.settings.config.external.url
  • 仪表板卡链接组件--> dashboard_cards.link||dashboard_cards.default[{{SOME_COMPONENT}}].link

开发人员可以使用以下两种方法之一定义 JWT 在这些 URL 中的位置:

  1. 隐式定义:Weebly 自动将 JWT 字符串附加到开发人员定义的 URL(以及任何适当的操作数,例如 & 或?)
  2. 明确定义:jwt:通过在您在manifest.json文件中提供的 URL 值内的任何有效位置使用来表示

生产安全最佳实践和注意事项

在开发过程中使用decode上述 PHP 库的方法既方便又快捷,但是当开发人员准备将他们的 Weebly 应用程序发布到应用程序中心时,您将希望包括尽可能高的安全性。

  1. 请求方案无效:验证入站请求的方案正在使用https
  2. 请求域无效:验证入站请求是否headers.host包含有效weebly .com TLD(因为包含 JWT 的请求只能来自https://www.weebly.com
  3. 签名类型不匹配的自动拒绝令牌:如果签名类型不匹配,一些 JWT 库不会自动拒绝令牌,这允许黑客在这种情况下伪造请求,请从 Auth0 阅读此文档以获取更多信息
  4. 每个 [TIMEFRAME] 的 IP 地址最大请求数:为了防止对这些 URL 的暴力破解或 DDOS 攻击,您可能希望包含在特定时间范围内自动缓存多个请求的功能。这在短时间内应该是一个相对较高的价值,因为人类在有效用例中可能会有请求性能限制。

虽然上述关于安全性的内容目前不是 Weebly 官方文档的一部分,但我已经提交了一个问题,以便将来包含它。

另外,我看到我们最近移动了内容,并且没有包含原始问题或 Jeffery 的答案中引用的 URL 的 301 重定向。我们刚刚修复了这个问题,以便您的链接正常工作。

我希望这会有所帮助,并且这些信息对您很有价值。

于 2017-10-31T21:31:06.323 回答