在浏览keycloak文档时,我们发现了这句话。
你必须提供一个会话认证策略Bean,它的类型应该是
RegisterSessionAuthenticationStrategy
公开或保密申请和NullAuthenticatedSessionStrategy
的应用。
最后一部分(仅承载)对我们来说是有意义的,因为 "状态 "存在于JWT令牌中,但是我们不明白为什么公共机密客户要求应用程序管理状态,因为令牌仍然由keycloak提供。
谁能帮助我们理解为什么?
为了回答你的问题,我建议考虑两种方法。
仅仅是Bearer+公共的。例如,无状态后端+SPA应用,它将参与标准流程:加载时重定向到Keycloak,并在Keycloak端登录完成后检索token对。前端也负责引用令牌。
老式的单片机,比如JSP之类的应用。在这种情况下,不是从前台请求中获取访问令牌,而是从内部的Http会话中获取令牌(由JSESSIONID等应用cookie识别)。令牌刷新也是由后端执行的(Keycloak适配器将在幕后完成所有的魔法)。
我希望现在大家都清楚,即使SSO状态被封装在token中,token对也可以被封装在应用状态中(就像session scoped bean)。
另外,保密客户机也可以只作为不记名客户机使用(你可以为他们关闭 "标准流量 "开关)。当你的服务需要以自己的名义而不是以用户的名义向其他服务进行呼叫时,这很有用。参见 "服务账户 "文档。