keycloak-鉴权quarkus框架

目录

一、环境说明

二、keycloak界面配置

1、创建realm

2、创建user

3、创建client及配置client权限

a、创建client

b、查看鉴权及配置认证

三、quarkus配置及说明

四、简单使用演示


一、环境说明

quarkus 官方提供了很多鉴权demo

https://github.com/quarkusio/quarkus-quickstarts/blob/main/README.md

keycloak是其中之一,本文介绍quarkus如何使用keycloak鉴权。

keycloak版本:23.0.7

quarkus版本:3.2.10

二、keycloak界面配置

1、创建realm

登录keycloak后先新建一个realm,在realm中,可以很轻松使用一套用户体系,当然用户体系也可以跨realm使用。realm相当于一个微服务群,client相当于每一个服务。

输入名称,当然有realm配置文件备份的话还可以点击browse导入配置,然后点击create按钮创建realm

2、创建user

进入user列表,点击add user。此user可以使用本地服务的user,这样就能用本地服务用户体系登录系统了。此方法后续再演示

输入用户名,点击create,不用着急密码,下一步再新建密码

选择Credential tab签,点击set password

输入密码和确认密码,点击save

然后,用户创建成功,看到角色(role mapping)中用户默认绑定了 default-roles-quarkus-test 的默认角色。keycloak中角色是要和认证权限匹配的

3、创建client及配置client权限

a、创建client

client ID 用于和客户端连接鉴权

打开客户端鉴权、细粒度鉴权,使用标准鉴权流程。当然这些选项后续编辑也可以

指定通过登录页鉴权后的重定向根路径

b、查看鉴权及配置认证

授权方式是clentID and secret,然后记录secret,将来本地服务授权连接配置要用。

Authorization 中删除Resource、Police、permission配置,重新添加

删除后,开始添加

1、添加Resource

输入名称和鉴权URL(本地使用鉴权服务的API调用路径)

2、添加Polices

我都嫌自己啰嗦了

我们选择角色为鉴权策略

输入策略名称,点击 add roles

选择域默认角色,如果客户端添加过角色的话,也可以选客户端角色

开始permission配置

分别输入名称,选择刚才录入的resources policy,点击保存

keycloak博大精深,能干的事儿很多,也特别灵活。细粒度认证里有很多选项。

三、quarkus配置及说明

quarkus中 pom.xml 配置

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-keycloak-authorization</artifactId>
    </dependency>
    <dependency>
      <groupId>org.keycloak</groupId>
      <artifactId>keycloak-admin-client</artifactId>
      <version>23.0.7</version>
    </dependency>

quarkus application.properites 配置文件中配置如下

#keycloak地址及域
quarkus.oidc.auth-server-url=http://127.0.0.1:8080/realms/quarkus-test
# keycloak 中 clientID
quarkus.oidc.client-id=login-test
# 对应keycloak的 client 中的 secret 
quarkus.oidc.credentials.secret=TdBv0xJbVjkrvslxYPUHHARBwnq01OvV
# 客户端应用类型
quarkus.oidc.application-type=web-app
# 使用 accessToken 鉴权(在浏览器头中)
quarkus.oidc.roles.source=accesstoken
# 不使用https鉴权
quarkus.oidc.tls.verification=none

quarkus.keycloak.policy-enforcer.enable=true

quarkus 中被拦截的controller方法如下

    @GET
    @Path("/message")
    @Produces(MediaType.APPLICATION_JSON)
    @RolesAllowed("default-roles-finduser")
    public String getmessage() {
        return "{\"code\":200,\"message\":\"获取quarkus数据成功\",\"data\":\"im account messages\"}";
    }

 启动quarkus

启动日志中出现keycloak配置API详情入口,可访问查看。至此,启动成功。

四、简单使用演示

http://127.0.0.1:8081/accounts/message
浏览器输入quarkus的接口地址访问后,跳转到keycloak登录页面

然后

当然,也可以使用quarkus的 dev-ui 进行权限测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值