重新加载页面后重新使用 UCWA 应用程序

Posted

技术标签:

【中文标题】重新加载页面后重新使用 UCWA 应用程序【英文标题】:Re-using UCWA app after page reload 【发布时间】:2014-12-03 13:38:58 【问题描述】:

是否可以在网站上导航时重新使用 UCWA 应用程序/令牌,而不是在导航到另一个页面(也就是单击菜单中的链接 - 不离开实际网站)后进行身份验证和创建新应用程序?

目前我每次重新加载页面时都必须重新进行身份验证,这是不可接受的。在我的情况下,也无法使用示例中的单页应用程序。

欢迎提出任何建议。

【问题讨论】:

【参考方案1】:

是的,这是可能的,您需要跟踪一些关键数据以使过渡更容易:

授权标头中使用的当前 OAuth 令牌 - 授权:Bearer cwt=$unique_id

选择 1

    根应用程序 Href - /ucwa/oauth/v1/applications/$id 用于创建应用程序的应用程序 Href 和用于创建原始应用程序的正文内容 - https://lync.domain.com/ucwa/oauth/v1/applications + 'userAgent':'UCWA Samples','endpointId':'1234','culture- zh-CN'

对于第一种情况,想法是对该 URL 发出 GET 请求并获取对应用程序资源的访问权限。对于第二种情况,想法是使用原始正文数据向应用程序 Href 发出 POST 请求,这应该导致 200(OK)而不是 201(已创建),因为它已经存在。

此答案假定 OAuth 令牌仍然有效。

还要考虑的一件事是应用程序是否在事件资源上发出 P-GET(待处理的 GET)。如果是,则应采用某种形式的逻辑来取消/暂停请求,直到加载新逻辑以处理流程事件。

有趣的是,它不需要跟踪应用程序正在进行的事件确认,因为来自应用程序请求的响应将提供正确的确认 (/ucwa/oauth/v1/applications/$id/events?ack =x) 或对事件资源的请求将提供指向正确 ack 的重新同步 href。

【讨论】:

感谢您的回答。不过,我的主要问题是如何安全地在转换之间存储 OAuth 令牌并重新使用它。我可以想到一种方法 - 将 OAuth 令牌保存在 cookie 中。但是,这种方法安全吗?它不会被盗吗(因为我不能让它成为 HttpOnly cookie,因为我需要在 javascript 中访问它)?你知道如何安全地将令牌带到新会话中吗? 我不建议将其存储在 cookie 中。如果我必须实现某些东西,我可能会考虑存储到 localStorage 或 sessionStorage,因为我不会传输凭据,但是如果您想要更明确的答案,我建议发布/搜索如何在 JavaScript 或预期中存储类似凭据的信息用于与 UCWA 交流的语言。 好的,谢谢。本地/会话存储听起来是一个不错的选择,但我也会寻找其他解决方案。

以上是关于重新加载页面后重新使用 UCWA 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

背景图像仅在重新加载页面后显示

创建应用程序时 UCWA OAuth 令牌无效

表单提交后如何防止页面重新加载 - JQuery

Angular Electron,重新加载页面后出现白屏

如何使用 Ajax 加载过滤后的数据,而无需在 laravel 中重新加载整个页面

即使在页面以角度5重新加载后如何将值本地存储到变量中