Keycloak获取Token示例及遇到的坑

一张图,同事提供的,比较清晰的解释了Keycloak的整体结构
Keycloak结构
Keycloak最顶层是基于realm的,可以理解为领域,命名空间等。每个realm之间没有任何关系,属于相互独立的两个系统。Client对应具体的应用,比如每一个微服务就是一个Client。
对于Keycloak的所有操作都要经过认证,包括访问REST接口,没有携带有效token的话会报401未授权。获取Token主要有两种方式,一是账号+密码,二是clientid+secret,下面举两个例子。


用户名+密码
此种方式获取到的token是用户的token。
POST: ip:port/auth/realms/icp/protocol/openid-connect/token
加粗标记为需要修改的部分
Header
这里写图片描述
Body
这里写图片描述
一些解释:
此方式下,body中grant_type必须为password表明认证方式,其余三项可根据实际情况进行修改。返回信息如下
这里写图片描述
token_type表示当前token的类型,后续使用此token进行其它操作时(如创建用户)务必带上此值。


clientid+secret
此种方式获取到的token属于client,即应用的token,此种方式通常用于注册用户时,预先获取访问keycloak的权限,然后调用创建用户的api。
secret可在此获取
这里写图片描述
如果这里没有secret,检查对应client中settings选项卡Access Type的值是否为confidential,如下图。
这里写图片描述
URL及Header同第一种方式,只有Body部分不一样。
这里写图片描述
grant_type需要做对应修改。
如果返回401,检查settings页面Service Accounts Enabled开关是否打开。


2018-09-14 09:49:56 更新
URL规则是这样的:/auth/realms/{realms}/protocol/{协议类型}/token
protocol的类型可以在client的设置首页查看


下面说一下遇到的坑
在Keycloak官方文档上,关于接口的前缀是这么写的
这里写图片描述
然而如果按照文档上写的话一定是各种404和401错误,正确写法是这样的
/auth/realms/{realm}
创建用户等管理类操作是这样的
/auth/admin/realms/{realm}


感谢http://huangqiqing123.iteye.com/

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值