泰安建设信息网站,厦门唯一官方网站,上海建筑设计院招聘,石狮网站建设哪家好配置keycloak
启动keycloak18
新建一个realm,名字叫test1 新建两个client#xff0c;一个用于前端#xff0c;一个用于后端
第一个 react
http://localhost:8081/auth/realms/test1/react/ 第二个 backend-service 在两个client下分别创建role
testRole backend-servic…配置keycloak
启动keycloak18
新建一个realm,名字叫test1 新建两个client一个用于前端一个用于后端
第一个 react
http://localhost:8081/auth/realms/test1/react/ 第二个 backend-service 在两个client下分别创建role
testRole backend-service 编写代码
代码结构如下 详细代码见资源绑定
或者git
demo-keycloak-full: keycloak前后端分离项目 流程解释
整个代码的流程就是授权码的流程 1用户访问前端页面
2前端页面检测到未登录就会跳转到keycloak登录也要要求用户登录
http://localhost:8081/auth
/realms/test1/protocol/openid-connect/auth?
client_idreact
redirect_urihttp%3A%2F%2Flocalhost%3A3000%2F
statef8861845-193f-4d4d-b06e-22340b2be2c8
response_modefragment
response_typecode
scopeopenid
nonceb46aeb99-109d-4e01-a553-f9abb9ddb652
code_challengeAkVISpppGpTAdOYe9jH8UFjk_WJt-UEmI5qoKWJIars
code_challenge_methodS256
3用户输入账号密码登录成功后keycloak回调到前端代码并返回授权码
4前端带上授权码去获取token,keycloak返回token
http://localhost:8081/auth/realms/test1/protocol/openid-connect/token 5前端带上token请求后端的商品列表, 6后端收到请求后会校验token并验证该token中指出的用户的role是否有权限访问products接口。
这里后端会从keycloak获取公钥并保存然后用公钥来验证前端发来的token
当请求到达Spring Boot应用时Keycloak Adapter会自动执行以下步骤来验证Token
抽取Token从HTTP请求的Authorization头部抽取Bearer Token。验证TokenAdapter使用公钥从Keycloak服务器的/protocol/openid-connect/certs端点获取来验证Token的签名。此外它还会验证Token的有效性包括但不限于检查Token的过期时间、受众aud声明等。设置安全上下文一旦Token通过验证Adapter会根据Token中的声明claims构建一个Authentication对象并将其设置到Spring Security的SecurityContextHolder中。这使得你可以在你的应用中任何地方访问到当前用户的身份信息和角色。
org.keycloak.adapters.springsecurity.filter.KeycloakAuthenticationProcessingFilter#attemptAuthentication-----------AuthOutcome result authenticator.authenticate();
org.keycloak.adapters.RequestAuthenticator#authenticate-----------AuthOutcome outcome bearer.authenticate(facade);
org.keycloak.adapters.rotation.AdapterTokenVerifier#verifyToken 7前端会定时检查token是否过期过期了的话会带上refresh token去获取新的token(access token)