2017-10-04 180 views
0

我有一个使用OAuth 2.0与第三方服务交流的Web应用程序。我希望我的服务器和我的网络应用程序代表用户与授权服务通话。我会按照正常的授权步骤进行重定向,获取授权码,并将其交换为访问令牌以及所有爵士乐。完成后,我的服务器具有访问令牌并可以与服务通话。不过,我希望网络应用程序也可以与服务通话,所以我不必通过我的服务器路由所有内容。OAuth访问令牌是否保密?

我可以将访问令牌发送到Web应用程序,以便我可以实现此目的吗?或者,访问令牌是否应该在我的服务和服务之间保密,绝不会向用户披露,就像客户端的秘密一样?

我试着在规范和各种博客文章中找到这个答案,但没有找到明确的答案。我知道对于客户端应用程序隐含的auth方法根本不涉及服务器端组件。因此,我最初的猜测是我可以将令牌发送给客户端。我想验证这一点,但。

回答

2

令牌被认为是非常敏感的信息,因为它允许访问服务。任何人如果拥有此令牌都可以发出请求。

这就是令牌传递到Authorization Header中的原因,这就是为什么强烈建议您通过https进行所有调用,以保护标头和正文信息。这也是为什么建议代币短寿命的原因,以至于如果确实有人妥协了,代价不会持续太久。

是的,你可以在你自己的应用程序之间共享这个令牌,它应该可以工作,只要令牌的接收者不存储调用者的IP地址或者具有其他一些检查机制。

然而理想的情况是您需要为需要访问的每个应用程序发布一组不同的ClientID和Client Secret。

不要忘记,这是应用程序向接收方标识自己的方式,它对于报告和分析目的可能很重要。