本系列文之後也会置於个人网站
首先,先来看看直接使用帐号密码授权的。
是的, OAuth 是有一个模式支援直接使用帐号密码的。与万能钥匙不太一样的是,授权的结果仍然是由授权服务器的权杖和资源服务器决定。尽管透过中央授权控制可以限制存取权杖可以做些什麽,但毕竟直接使用帐号密码并不是特别好,故在其他模式下都不适用时,才应该再考虑此模式。
+----------+
| Resource |
| Owner |
| |
+----------+
v
| Resource Owner
(A) Password Credentials
|
v
+---------+ +---------------+
| |>--(B)---- Resource Owner ------->| |
| | Password Credentials | Authorization |
| Client | | Server |
| |<--(C)---- Access Token ---------<| |
| | (w/ Optional Refresh Token) | |
+---------+ +---------------+
Figure 5: Resource Owner Password Credentials Flow
首先先替浏览器安装RESTer插件。Firefox和Chrome都可以找得到。至於其他浏览器就要自己找找看或使用Postmam、Curl之类的工具。
先前建立的my-quick-start-app
并不支援这个模式,主要是因爲开啓了Consent Required
。上面说道password模式主要授权方式爲中央授权控制,也就是前几天提到的白名单。而my-quick-start-app
建立的是灰名单的客户端。所以我们得在建立一个,就叫flow-experiment-1
吧!
然後Consent Required
维持禁用;Direct Access Grants Enabled
维持啓用
开啓RESTer并依下图填入资讯。
(使用POST方法打endpoint - http://localhost:8080/auth/realms/quick-start/protocol/openid-connect/token )
此外Content-Type
必须是application/x-www-form-urlencoded
。在之後几个模式都是如此,也就不会再特别提及。
最後填上我们要使用的模式、帐号/密码、要授权的客户端和需要的授权范围。
password
bob
password
flow-experiment-1
email profile
如果你使用Curl,可以透过以下命令执行:
curl -X POST http://localhost:8080/auth/realms/quick-start/protocol/openid-connect/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=password&username=bob&password=password&client_id=flow-experiment-1'
最後就会得到以下结果
对於结果,目前只会简单说明三个部分access_token
、refresh_token
、token_type
。
关於access_token
应该也不用太说什麽,它就是资源服务器会认的权杖。在取用资源时会需要同时给资源服务器做验证授权。此外,OAuth并没有特别说明存取权杖的格式,而这里的格式是之後会介绍的JWT。token_type
则说明了这是一个Bearer
权杖,需要使用Bearer
的方式进行验证授权。更详细部分之後才会提到。
然後是refresh_token
。这个返回值是可选的,授权服务器可能不会返回其值。除了有可能只允许此一次授权外,另一个原因是本身就可以使用帐号密码的话,并不需要使用refresh_token
。如前所述,直接使用帐号密码并不是特别好的方式,所以通常的做法应该只会使用一次帐号密码,使用後客户端会立刻忘记该资讯。之後就都使用refresh_token
,并使用之後同样会提到的另一个模式 -- Refresh Token Flow 。
<<: [2021铁人赛 Day14] General Skills 11
>>: Day 23: Recurrent Neural Network — 循环精神网路初探(下)
昨天介绍了各种选择器,今天介绍伪类及伪元素样式设定,可以让画面有更多的样式变化,也减少html co...
前面几天,我探索了 Lua 的变数型别、条件判断、回圈、标准函式库等 在这过程中,我已经多少看过函数...
Keyword: KMM Gradle,Kotlinx serialization 到Day9使用K...
所以我说...程序是虾饺? 程序是可以直接在电脑上执行,以完成某个目的或任务的一连串指令 换句话说,...
对於AAC 这个音讯格式,可能大多数人都不太熟悉。但是AAC 是 iTunes 里常见的音乐档案格式...