本系列文之後也会置於个人网站
之前已经看到我一些使用scope的地方:
接着要来看看是打哪来?在哪设定的?
首先在Realm的Configure下有一个Client Scopes。其中有定义我们已经使用过的profile
、email
、role
。另外可以注意到使用到Protocol都是openid-connect
,但本系列也不会提到另外一个--saml
,所以差异上基本不必理会。
上面定义好的Client Scopes
後,不代表Client就可以使用了。
还需要在Client的Client Scopes页签设定可以使用的Scope。预设上会有一些,也就是其实Keycloak在收到不包含scope请求後,也同样会送出的部分。剩下的就是可以选择的部分。
在未建立好新的Client Scope前,先使用OAuth.Tools看看会发生什麽事情:
当我们要求x
这个scope,却会得到一个错误表示不被允许。
x
接着可以很简单的建立一个名爲x
的Client Scope。
但此时,在进行一次要求,仍然会得到相同错误。
oauth_tools
client使用x
scope需要将client scope -- x
添加到oauth_tools下可以使用的scope(Optional Client Scopes)。
这次就可以成功取回存取权杖。还可以在存取权杖分析内的scope
看到x
。
最後是Claim的概念。这个与JWT格式的Token有关,本系列之後还会再提到JWT,现在就不再多做展开。
前面说过OAuth并没有定义Token需要使用的格式,但是资源服务器在做存取控制时,必须理解Token,那势必需要一种解释Token的办法。而claims是在JWT这种Token格式下,建议解析後的每一个栏位,像是iss
、sub
、exp
,以及scope
、email
、website
、name
等等都是一个个声明(claims)。
此外,Keycloak还有一处使用到了Scope这个字,但作用上与上面有些不同。用於资源(resource)上,与授权(Authorization)和存取控制(Access Token)相关。
在之後,会将资源
+操作
视爲一个permission。像是针对某个档案(资源),可以进行写入(操作)。也就组成一个权限(permission)--file:write
。这样的设计并不是唯一,也可能是反过来的。可以看看另一套系统的权限设计:Alerta的权限是read:alerts
和write:alerts
。最终仍会回到资源服务器如何解释。
同样地,这部分在之後还会有相关内容,还请期待。
<<: 【Day 26】Google Apps Script - API Blueprint 篇 - Apiary 介面介绍
JUMP! 没有其他选择,执行到这就一定得跳! 这次有两种不同格式的指令,分别是 J-type 的 ...
前言 接下来聊聊 Python 中的模组 (Module) ,毕竟 JavaScript 也有所谓的...
刷题的正确姿势 在前一天的 LeetCode 解题的思考策略与解题地图 中提到程序题目的两种考法,...
事实上,自学并不是一件简单的事。 在之前的 NXT 企划,要不是有老师建议我要怎麽做出那个架构,我根...
今天我们要来介绍 EC2 的基本架构,那我们开始吧! EC2 Instance由许多重要元件组成,...