【问题标题】:UCWA refresh Oauth token with grant_type=passwordUCWA 使用 grant_type=password 刷新 Oauth 令牌
【发布时间】:2015-06-08 21:00:49
【问题描述】:

我正在尝试使用 Lync UCWA 刷新 OAuth 令牌,遵循此处的示例 https://msdn.microsoft.com/en-us/library/office/dn356686.aspx#sectionSection3

他们文档中的示例使用grant_type urn:microsoft.rtc:annmeeting,但我使用的是grant_type=password。我的客户端首先成功地针对 /WebTicket/oauthtoken 端点进行身份验证,并且我收到了 access_token 就好了。

几个小时后,我需要再次使用以下参数发布到 /WebTicket/oauthtoken 来刷新 OAuth 令牌:

grant_type=password
username=$my_username
password=$my_password
ms_rtc_renew=$access_token (cwt=AA....)

虽然返回状态 400,但出现错误:invalid_request 和标题中的注释“没有有效的安全令牌”。我放入 ms_rtc_renew 的值与我在其他端点的所有标头中使用的值相同,'Authorization' : ['Bearer $access_token'],因此令牌工作正常。

我已确保在发布到 /WebTicket/oauthtoken 端点时使用的是 Content-Type: application/x-www-form-urlencoded 的标头,并且我在发布之前对数据进行了 urlencoding。

是否有其他人能够使用 Lync UCWA 1.0 和 grant_type=password 刷新 OAuth 令牌?任何有经验的 UCWA 开发人员都知道我在帖子中缺少什么来刷新令牌?

提前致谢。

【问题讨论】:

    标签: lync ucwa


    【解决方案1】:

    ms_rtc_renew 特定于匿名会议授权类型。在同一文档中它提到:

    为经过身份验证的用户刷新令牌与获取新令牌的流程相同。

    这是正确的思路,但它确实省略了一些关键信息。如果您有兴趣保持原始 UCWA 应用程序有效,则必须在对应用程序执行 POST 请求时提供相同的信息,否则它将创建一个新应用程序。

    扩展答案

    当您达到 UCWA 应用程序向请求返回 404 并指示当前 OAuth 令牌无效的点时,需要更新。按照KeyTasks-CreateApplication 的步骤,在步骤#5 请求新令牌。此时获取新令牌并替换 Authorization 标头并尝试发出失败的请求。

    如果这不起作用,请考虑使用相同的数据(UserAgent、EndpointId、Culture)重新创建应用程序(步骤 #9)。您需要替换所有保存的 Json 数据,因为应用程序 Url 可能会在实例之间发生变化(不完全确定)。

    【讨论】:

    • 感谢 ShelbyZ 的回复。抱歉,我仍然不清楚,当我尝试更新使用 grant_type = password 获得的令牌时,UCWA 是否正在寻找不同的键/值?类似grant_type=password&username=johndoe&password=A3ddj3w&access_token=cwt... ?
    • 稍微扩展了我的原始片段,让我知道你是否有意义。
    • 好吧,据我所知,您只是建议在 8 小时结束时创建一个新应用程序,而不是更新我已经拥有的 access_token。这是一个完全可以接受的解决方案,但它似乎违背了 UCWA 文档的精神。没问题,它是 UCWA 1.0 是有原因的!
    • 我认为您错过了一个关键点,即非匿名授权类型在请求 OAuth 令牌时没有获得特殊的更新参数。关键是 OAuth 令牌过期,它应该可以请求新的令牌并替换标头并继续 UCWA'n。在 OAuth 令牌过期并且应用程序也被清理的情况下,建议创建一个新应用程序。当您在创建时提供相同的参数时,服务器应重新建立该应用程序。
    • 我正在跟踪,ShelbyZ。文档中的措辞很尴尬,“对于经过身份验证的用户,令牌的生命周期为八 (8) 小时。客户端应用程序应监控到期时间并根据需要刷新令牌。”我完全理解您现在的来历,只需要阅读文档,“客户端应用程序应在原始令牌过期时请求新令牌”。再次感谢您的澄清。
    猜你喜欢
    • 2021-01-23
    • 2017-06-24
    • 1970-01-01
    • 2020-05-05
    • 2017-11-14
    • 2017-11-20
    • 2016-03-31
    • 2012-12-21
    • 2015-06-27
    相关资源
    最近更新 更多