我喜欢将授权视为一种东西,比如一枚硬币,而访问令牌则是另一种东西,一把打开门的钥匙。
为了得到钥匙,你必须交出一枚硬币。接受什么样的硬币?
好吧,你可以交出一个写有密码的硬币。这表明您知道密码,因此硬币被接受并且您获得了密钥。这是资源所有者密码凭据授权。
网络服务器可以建立一个登录表单,用户输入一个网络服务器看到的密码。 Web 服务器使用密码获取密钥。
除了密钥,您还可能获得了一个刷新令牌。所以稍后,你可以交出一个印有刷新令牌的硬币。这枚硬币被接受,你得到一个新的钥匙。这是刷新令牌授权。
您可能不知道自己的密码。您的父母会为您记录您的密码。你让你的父母去为你取一个“代码”。他们与当局交谈并提供密码,并收到他们提供给您的代码。现在您可以将代码放在硬币上,交出硬币,然后收到钥匙。你没有看到密码,你的父母也没有看到钥匙。这是授权码授予。
网络服务器要求您“使用 Google 登录”。谷歌会询问您的密码并给您一个授权代码,该代码会传回网络服务器。网络服务器无需查看您的密码即可从 Google 获取密钥。
你可能与当局有特殊关系,并且拥有一个秘密。您不需要密码。在这种情况下,你可以把这个秘密放在硬币上,然后用它交换钥匙。这是客户端凭据授权。
您可能是后端服务器,需要密钥,但没有用户名或密码。你只需要一个秘密来获取密钥。
如果您是 VIP,您甚至不需要硬币!您只需挥动双手,即可获得钥匙。这是一个“隐含”的硬币——也就是说,没有硬币!这是隐式授权。
你可能是一个手机应用程序,你真的没有安全的地方可以保密,所以你只需挥手就可以拿到你的钥匙。