我对Keycloak的理解(可能不正确)是,一旦用户登录并通过身份验证,访问令牌/ JWT就会作为cookie存储在浏览器中(默认名称为“ kc-access” )。
是否可以配置密钥斗篷而不是将访问令牌直接存储为Bearer令牌,而不是存储在cookie中?
我希望使用Keycloak来保护Web应用程序安全,但是我在Authentication上阅读的大多数资源通常都谈论存储为Bearer Token而不是cookie的访问令牌。
从Keycloak文档中,我看不到任何有关将访问令牌存储为Cookie或不记名令牌的选项的提法-我是否误解了Keycloak是如何用于为Web应用程序提供身份验证的?
答案 0 :(得分:0)
Keycloak用作单点登录(SSO)提供程序。因此,它被设计为与多个组件一起使用。它旨在通过Cookie使用户浏览器中的会话保持打开状态。该会话是Keycloak专用的。然后,身份验证流程为您的应用程序提供令牌,以对用户进行身份验证。然后,您的应用程序通常会设置它自己的cookie,以为用户建立会话,并避免让他们登录每个页面。
当您使用Keycloak登录时,它会通过在其中存储cookie来保持与浏览器的会话打开。该会话的时间长度和其他因素可以在您的领域设置中配置。
当您使用Keycloak登录到另一个应用程序(例如Web应用程序)时,您将OpenID Connect(或SAML)作为协议使用类似于以下内容的流程对用户进行身份验证:
这些步骤中的大多数应由库处理。 Keycloak为流行的框架和服务器(例如Apache和Tomcat)提供了许多OpenID适配器。
会话cookie可以是任何字符串,只要它们在浏览器和您的应用程序之间是唯一且私有的即可。他们从浏览器中跨请求识别用户。承载令牌通常用于认证或连接到无状态服务,例如API。
您可以在以下位置找到有关OpenID协议的文档:https://openid.net/connect/faq/。