Keycloak与浏览器身份验证流程的集成

时间:2019-07-31 14:49:38

标签: spring-boot keycloak

我目前正在通过自定义AuthenticationProvider实现将Keycloak集成到一个相当复杂的Spring Boot应用程序环境中(因此,我不使用KeyclokAuthenticationProvider)。就我而言,我的目标是将OIDC身份验证协议与Browser流一起使用。

因此,当客户端导航到我的spring应用程序的登录页面时,他将被重定向到keycloak登录页面。这已经在工作。

在那里,一旦他通过身份验证,便会被重定向回初始应用程序页面。这就是我在努力进行的地方。

一旦密钥斗篷通过向我的应用程序发出GET请求并将我指定回session_statecode参数,便将我重定向回我的应用程序。我认为这些可能可以用来在进一步的通信中对客户端进行身份验证,但是我不确定我的假设是否正确,如果可以,我将如何使用这些值。遗憾的是我无法在文档中找到此信息...

所以我的问题是:

  1. 对于基于浏览器的OIDC身份验证,我的方法正确吗?
  2. 我是否正确假设session_statecode变量可以帮助我在Web应用程序中对客户端进行身份验证?
  3. 如何使用这些值进行身份验证?

我希望我能挣扎并表示感谢,<3

1 个答案:

答案 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

相关问题