Day25 - 【概念篇】Keycloak使用基本概念 - 第一部分: Scopes & Claims

本系列文之後也会置於个人网站


这之前看到的scopes

之前已经看到我一些使用scope的地方:

接着要来看看是打哪来?在哪设定的?

Realm 下的 Client Scopes

首先在Realm的Configure下有一个Client Scopes。其中有定义我们已经使用过的profileemailrole。另外可以注意到使用到Protocol都是openid-connect,但本系列也不会提到另外一个--saml,所以差异上基本不必理会。

Client 下的 Client Scopes

上面定义好的Client Scopes後,不代表Client就可以使用了。
还需要在Client的Client Scopes页签设定可以使用的Scope。预设上会有一些,也就是其实Keycloak在收到不包含scope请求後,也同样会送出的部分。剩下的就是可以选择的部分。

透过OAuth.Tools做一点示范说明

在未建立好新的Client Scope前,先使用OAuth.Tools看看会发生什麽事情:

当我们要求x这个scope,却会得到一个错误表示不被允许。

建立client scope -- x

接着可以很简单的建立一个名爲x的Client Scope。


但此时,在进行一次要求,仍然会得到相同错误。

允许oauth_tools client使用x scope

需要将client scope -- x添加到oauth_tools下可以使用的scope(Optional Client Scopes)。

这次就可以成功取回存取权杖。还可以在存取权杖分析内的scope看到x

Claim

最後是Claim的概念。这个与JWT格式的Token有关,本系列之後还会再提到JWT,现在就不再多做展开。

前面说过OAuth并没有定义Token需要使用的格式,但是资源服务器在做存取控制时,必须理解Token,那势必需要一种解释Token的办法。而claims是在JWT这种Token格式下,建议解析後的每一个栏位,像是isssubexp,以及scopeemailwebsitename等等都是一个个声明(claims)。

Authorization Scopes

此外,Keycloak还有一处使用到了Scope这个字,但作用上与上面有些不同。用於资源(resource)上,与授权(Authorization)和存取控制(Access Token)相关。

在之後,会将资源+操作视爲一个permission。像是针对某个档案(资源),可以进行写入(操作)。也就组成一个权限(permission)--file:write。这样的设计并不是唯一,也可能是反过来的。可以看看另一套系统的权限设计:Alerta的权限是read:alertswrite:alerts。最终仍会回到资源服务器如何解释。

同样地,这部分在之後还会有相关内容,还请期待。


<<:  【Day 26】Google Apps Script - API Blueprint 篇 - Apiary 介面介绍

>>:  Day 29 不停的探索新知

RISC-V: Jump 指令

JUMP! 没有其他选择,执行到这就一定得跳! 这次有两种不同格式的指令,分别是 J-type 的 ...

从 JavaScript 角度学 Python(15) - 模组 (Module)

前言 接下来聊聊 Python 中的模组 (Module) ,毕竟 JavaScript 也有所谓的...

题目背後的设计思维 - 资料结构与演算法

刷题的正确姿势 在前一天的 LeetCode 解题的思考策略与解题地图 中提到程序题目的两种考法,...

03 从专题研究中学习

事实上,自学并不是一件简单的事。 在之前的 NXT 企划,要不是有老师建议我要怎麽做出那个架构,我根...

Day 9 运算宝石:EC2 重点架构

今天我们要来介绍 EC2 的基本架构,那我们开始吧! EC2 Instance由许多重要元件组成,...