2015-11-06 95 views
1

我一直在尝试了解OAuth2是如何工作的。起初我认为花费一个额外的步骤交换认证代码+客户端密码来访问令牌是多余的,为什么不直接让服务器返回访问令牌。为此我找到了this explanation为什么我们需要客户端ID和客户端密钥,而不仅仅是clientSecret?

然后让我困惑的是,为什么它需要一个clientId和一个客户端密钥,而不是一个秘密?一个既可以宣称也可以证明自己的秘密。客户端应用程序可以在将用户发送给服务器以授权自己访问服务器资源时将其传递给服务器。

谢谢!

回答

0

想象客户端用秘密签署请求并发送签名。服务器如何知道使用哪个秘密?推测服务器支持多个消费者。

0

客户端ID在令牌舞的第一部分发送以识别客户端。此ID在URL中以不安全的方式发送。即使在这个请求的authz服务器端,id也可能以authz服务器将用户代理重定向到授权页面的不安全方式公开。所以客户端ID并不意味着是安全的,只是为了识别客户端。

只有在收到授权码后(用户授权后),客户端,然后是否需要以更安全的方式获得访问令牌。这是通过TLS使用客户端密钥的地方。

0

您可以让服务器直接返回访问令牌。您需要请求隐式授权(response_type,值为token而不是code)。

授权服务器直接返回访问令牌。

此类授权旨在用于无法保留客户机密或客户机ID的基于用户代理的客户机(例如单页网络应用程序),因为所有应用程序代码和存储均可轻松访问。如果您的客户可以保密,建议您使用更安全的授权类型。

相关问题