我目前正在通过自定义AuthenticationProvider实现将Keycloak集成到一个相当复杂的Spring Boot应用程序环境中(因此,我不使用KeyclokAuthenticationProvider)。就我而言,我的目标是将OIDC身份验证协议与Browser
流一起使用。
因此,当客户端导航到我的spring应用程序的登录页面时,他将被重定向到keycloak登录页面。这已经在工作。
在那里,一旦他通过身份验证,便会被重定向回初始应用程序页面。这就是我在努力进行的地方。
一旦密钥斗篷通过向我的应用程序发出GET请求并将我指定回session_state
和code
参数,便将我重定向回我的应用程序。我认为这些可能可以用来在进一步的通信中对客户端进行身份验证,但是我不确定我的假设是否正确,如果可以,我将如何使用这些值。遗憾的是我无法在文档中找到此信息...
所以我的问题是:
session_state
和code
变量可以帮助我在Web应用程序中对客户端进行身份验证?我希望我能挣扎并表示感谢,<3
答案 0 :(得分:0)
在Keycloak将用户重定向到您的应用程序之后,您将接收到的代码交换为访问和ID令牌。访问令牌用于对资源服务器的请求。
要交换授权码,请使用以下请求:
curl --request POST \
--url 'https://KEYCLOAK/auth/realms/REALM/protocol/openid-connect/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \
--data 'client_id=CLIENT_ID' \
--data client_secret=CLIENT_SECRET \
--data code=CODE \
--data 'redirect_uri=REDIRECT_URI'
如果是公共客户,请忽略client_secret
。
您可以在此处详细了解Authorization Code
(浏览器)流程:
https://www.keycloak.org/docs/latest/server_admin/index.html#authorization-code-flow