我们创建一个不需要认证授权就可以访问的API,然后返回用户列表
添加依赖
整体文件结构如下
DemoRestProviderFactory 和 DemoRestProvider 分别实现接口 org.keycloak.services.resource.RealmResourceProviderFactory 和 org.keycloak.services.resource.RealmResourceProvider
DemoRestProviderFactory 将会定义 REST API 名称,并且在构造器中创建DemoRestProvider实例
DemoRestProviderFactory.java
DemoRestProvider.java
UserDetails.java
使用 SPI 机制添加factory class 到keycloak
添加文件org.keycloak.services.resource.RealmResourceProviderFactory 到 src\main\resources\META-INF
添加文件jboss-deployment-structure.xml到 src\main\resources
jboss-deployment-structure.xml
org.keycloak.services.resource.RealmResourceProviderFactory 的内容为
gaurav.keycloak.DemoRestProviderFactory
运行 maven package,生成的jar包放入keycloak-12.0.2\standalone\deployments 内会自动生成keycloak-rest-api-1.0.jar.deployed 文件
进入keycloak
创建一个realm GW,然后在GW下随便添加几个用户。
参考
参考2
源码
@[TOC]
@[TOC]
1.#Keycloak项目配置
步骤****1****:****Keycloak****入门
请参阅Keycloak入门 文档 以运行和设置keycloak管理员用户。
运行Keycloak后,使用 http:// localhost:8080 / auth 访问keycloak管理控制台
设置keycloak用户名= admin,密码= admin。
第****2****步:创建开发领域
名称:coablt
[图片上传失败...(image-9626fc-1578649185668)]
图1:添加开发领域
客户端ID: account
客户端协议: openid-connect
启用直接访问授权Direct Access Grants Enabled :No
服务帐号已启用 Service Accounts Enabled :No
授权已启用 Authorization Enabled****:****No
[图片上传失败...(image-904bdf-1578649185668)]
步骤****4****:创建客户端角色
在客户端下创建一个角色。在这种情况下,角色admin在雇员服务下创建。
[图片上传失败...(image-1be1e9-1578649185668)]
图3:创建角色
第****6****步:创建一个映射器(在访问令牌中获取****user_name****)
Keycloak访问令牌是 JWT 。它是一个JSON,并且该JSON中的每个字段都称为声明。默认情况下,登录用户名会在访问令牌中名为“ preferred_username”的声明中返回。Spring Security OAuth2资源服务器在名为 “ user_name” 的声明中需要用户名。因此,我们必须创建下面的映射器,以将登录的用户Id映射到名为user_name的新声明。
[图片上传失败...(image-693526-1578649185668)]
图4:创建映射器
步骤****7****:建立使用者
[图片上传失败...(image-b16592-1578649185668)]
图5:创建用户
步骤****8****:将客户端角色映射到用户
为了提供对客户端(微服务)的访问,需要为用户分配/映射相应的角色。
[图片上传失败...(image-c5609f-1578649185668)]
图6:为用户分配角色
使用****PostMan****获取访问令牌(用于测试)
选择 授权 类型为OAuth 2.0,点击“获取新访问令牌”,然后输入以下详细信息。
[图片上传失败...(image-6f4c53-1578649185668)]
邮递员工具屏幕快照:从客户端的密钥斗篷获取访问令牌
· 确保在请求令牌时选择客户端身份验证作为“在正文中发送客户端凭据”。
· 回调URL是在Keycloak中配置的重定向URL。
· 客户端机密可能与您不同,请从客户端配置中的密钥库中复制一个。
· 您也可以使用 https://jwt.io 检查收到的令牌的内容。
步骤****10****:创建一个****Spring Boot****应用程序
[图片上传失败...(image-45efc0-1578649185668)]
依存关系
[图片上传失败...(image-d66a1b-1578649185668)] 步骤****11****:配置****application.yml
常规安全属性
[图片上传失败...(image-992887-1578649185668)] 使用****OAuth2****资源服务器保护****REST****端点的属性
[图片上传失败...(image-aa43c4-1578649185668)]
图7:复制jwt公钥值
注******1******:****可以从领域级别的公钥复制 security.oauth2.resource.jwt.key-value 属性值。这非常重要,此属性是使用****JwtAccessTokenCustomizer******的****属性,我们将在后面看到。
** 注意******2******:****属性值会根据您的配置而有所不同,应注意使用正确的值。
步骤****12****:配置****APi****管理账户
[图片上传失败...(image-b408a1-1578649185667)]
[图片上传失败...(image-71cf2b-1578649185667)]
[图片上传失败...(image-70e51d-1578649185667)]
[图片上传失败...(image-974948-1578649185667)]
步骤****13****:配置后台****APi****管理账户
因为项目初始化了Admin超级管理员,所以需要keycloak配置一个admin的新用户
然后将该用户ID 复制到sys_user表的Oauth2_id字段内
[图片上传失败...(image-715b3b-1578649185667)]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)